android - 使用Gracenote SDK Android进行录音

标签 android audio record gracenote

我目前正在使用Gracenote SDK开发一个android应用。
我想通过听样本来识别音乐,因此我遵循了开发人员指南第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();
            }

        }
    });

最后是我的 list :
<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" />

最佳答案

关于您的客户ID问题,我想我之前也遇到过类似的问题,原因是我使用的旧版本的应用具有我的客户ID。当前版本期望以下三件事:

  • gnsdkClientId
  • gnsdkClientTag
  • license.txt

  • 一旦您在MainActivity.java中输入前两个并将其license.txt添加到 Assets 文件夹中,示例应用程序便应该可以正常工作。该示例应用程序使用Eclipse,您可以在此处引用Android Studio版本:https://github.com/kevguy/GracenoteSDKSample

    关于android - 使用Gracenote SDK Android进行录音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36866324/

    相关文章:

    android - 阅读超时上传到谷歌驱动器

    android - 如何在android中制作圆角半径

    android - 如何在 Android 中从文件读取 OpenCV Mat 对象?

    audio - 使用不同编解码器的视频样本集合

    Clojure记录: how to get hinted type given an attribute name

    actionscript-3 - 使用AS3录制和播放 Action

    android - float 操作按钮底部边距不起作用

    ios - 在 iOS 9 上以静音模式播放声音

    audio - 在jPlayer中循环播放列表时如何消除延迟?

    arrays - 包含带有 'Implicit' 类运算符的动态数组的 Delphi Record 的初始化