Аудио запись с помощью Gracenote SDK для Android

В настоящее время я разрабатываю приложение для Android с использованием Gracenote SDK. Я хочу идентифицировать музыку, прослушивая образец, поэтому я следовал всему на странице 99 руководства разработчика ("Определение потоковой музыки"). Но у меня возникает проблема, когда я хочу инициализировать микрофон. Я правильно устанавливаю разрешения, даю разрешения для приложение (в смартфоне).

Я буду рад, если кто-нибудь сможет мне помочь. Спасибо за чтение.

Вот ошибка, которую я получил.

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" />

1 ответ

Что касается вашей проблемы с идентификатором клиента, я думаю, что сталкивался с подобным ранее, и причина была в том, что я использовал старую версию приложения с идентификатором клиента, который у меня есть. В текущей версии ожидаются следующие три вещи:

  1. gnsdkClientId
  2. gnsdkClientTag
  3. license.txt

Образец приложения должен работать после ввода первых двух в MainActivity.java и добавления файла license.txt в папку активов. Пример приложения использует Eclipse, вы можете сослаться на версию Android Studio здесь: https://github.com/kevguy/GracenoteSDKSample

Другие вопросы по тегам