2016-04-26 8 views
0

Ich entwickle gerade eine Android-App mit Gracenote SDK. Ich möchte Musik identifizieren, indem ich ein Sample höre, also habe ich alles auf Seite 99 des Entwicklerleitfadens verfolgt ("Streaming Musik identifizieren). Aber ich habe ein Problem, wenn ich das Mikrofon initialisieren möchte. Ich ordne die Berechtigungen richtig ein, geben Berechtigungen für die App (im Smartphone).Audioaufzeichnung mit Gracenote SDK android

ich bin froh, wenn mir jemand helfen könnte. Sie zum Lesen danken.

Hier ist der Fehler, die ich erhalten.

W/System.err: com.gracenote.gnsdk.GnException: Failed to initialize audio source 
W/System.err:  at com.gracenote.gnsdk.gnsdk_javaJNI.GnMusicIdStream_audioProcessStart__SWIG_0(Native Method) 
W/System.err:  at com.gracenote.gnsdk.GnMusicIdStream.audioProcessStart(GnMusicIdStream.java:89) 
W/System.err:  at com.musimap.trackproperties.GraceNoteTest$2.onClick(GraceNoteTest.java:115) 
W/System.err:  at android.view.View.performClick(View.java:5156) 
W/System.err:  at android.view.View$PerformClick.run(View.java:20755) 
W/System.err:  at android.os.Handler.handleCallback(Handler.java:739) 
W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
W/System.err:  at android.os.Looper.loop(Looper.java:145) 
W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5832) 
W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
W/System.err:  at java.lang.reflect.Method.invoke(Method.java:372) 
W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

Mein Code

IGnMusicIdStreamEvents musicStreamEvent = new IGnMusicIdStreamEvents() { 
     @Override 
     public void musicIdStreamProcessingStatusEvent(GnMusicIdStreamProcessingStatus gnMusicIdStreamProcessingStatus, IGnCancellable iGnCancellable) { 
      Log.d("Processing", "yessir"); 
     } 

     @Override 
     public void musicIdStreamIdentifyingStatusEvent(GnMusicIdStreamIdentifyingStatus gnMusicIdStreamIdentifyingStatus, IGnCancellable iGnCancellable) { 

     } 

     @Override 
     public void musicIdStreamAlbumResult(GnResponseAlbums gnResponseAlbums, IGnCancellable iGnCancellable) { 
      Log.d("album", gnResponseAlbums.toString()); 
     } 

     @Override 
     public void musicIdStreamIdentifyCompletedWithError(GnError gnError) { 
      Log.d("error identification", gnError.toString()); 
     } 

     @Override 
     public void statusEvent(GnStatus gnStatus, long l, long l1, long l2, IGnCancellable iGnCancellable) { 

     } 
    }; 

    try { 

     mic = new GnMic(); 
     streamMusic = new GnMusicIdStream(user, GnMusicIdStreamPreset.kPresetMicrophone, musicStreamEvent); 
     streamMusic.options().lookupData(GnLookupData.kLookupDataContent, true); 
     streamMusic.options().lookupData(GnLookupData.kLookupDataSonicData, true); 
     streamMusic.options().resultSingle(true); 

    } catch (GnException e) { 
     e.printStackTrace(); 
    } 


    start.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mic.sourceInit(); 
      try { 
       streamMusic.audioProcessStart(mic); 
       streamMusic.identifyAlbumAsync(); 
      } catch (GnException e) { 
       e.printStackTrace(); 
      } 

     } 
    }); 

Und schließlich mein Manifest:

<uses-permission android:name="android.permission.RECORD_AUDIO"/> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

Konnten Sie die Beispielanwendung ausführen und die Erkennung testen? – WYH

+0

Ich habe versucht, das Beispiel zu verwenden, aber die App ist zu fehlerhaft. Ich kann keine Anerkennung starten. – Huuusey

+0

Eigentlich kann ich es wegen meiner Kunden ID nicht benutzen. Hier ist die Nachricht, die ich auf dem Protokoll erhalte. "Benutzer Neu erstellen: Client-ID 'MYCLIENTID' wird von der aktuellen Lizenz nicht unterstützt, GCSL-Datentypen" – Huuusey

Antwort

0

In Bezug auf Ihr Problem mit der Client-ID, ich glaube, ich in eine ähnlichen lief vor und der Grund war ich mit dem einer alten Version der App wurde mit Client-ID, die ich habe. Die aktuelle Version erwartet die folgenden drei Dinge:

  1. gnsdkClientId
  2. gnsdkClientTag
  3. license.txt

Die Beispielanwendung sollte die ersten beiden in MainActivity.java, wenn Sie Eingabe arbeiten und fügen die Datei license.txt im Ordner "Assets". Die Beispielanwendung verwendet Eclipse, Sie können hier eine Android Studio-Version beziehen: https://github.com/kevguy/GracenoteSDKSample