2016-04-26 85 views
0

我目前正在開發一個使用Gracenote SDK的android應用程序。 我想通過聽一個示例來識別音樂,所以我遵循了開發者指南第99頁上的所有內容(「識別流式音樂」) 但是我想要初始化麥克風時遇到問題 我正確設置了權限,授予權限的應用程序(智能手機)。Gracenote SDK的音頻記錄android

我會很高興,如果有人可以幫助我。 謝謝您的閱讀。

這裏是我收到的錯誤。

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) 

我的代碼

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(); 
      } 

     } 
    }); 

最後我的清單:

<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

您能夠運行示例應用程序並測試識別嗎? – WYH

+0

我試圖使用該示例,但該應用程序太多了。我無法啓動識別。 – Huuusey

+0

其實我無法使用它,因爲我的客戶端ID。這是我在日誌上收到的消息。 「用戶創建新:當前許可證不支持的客戶端ID'MYCLIENTID',GCSL數據類型」 – Huuusey

回答

0

關於你提到的問題,與客戶端ID,我覺得我遇到了一個類似前的原因是,我使用的是舊版本的應用程序的客戶端ID我有。當前版本預計以下三件事情:

  1. gnsdkClientId
  2. gnsdkClientTag
  3. LICENSE.TXT

的示例應用程序應該在MainActivity.java並添加一起工作,一旦你輸入的前兩個資產文件夾中的license.txt。示例應用程序使用Eclipse,您可以在這裏參考Android Studio版本:https://github.com/kevguy/GracenoteSDKSample