0

我正在升级应用程序以使用新的 Mobile Android GNSK,但我注意到使用新的 MusicID-Stream 有点棘手。如果在“audioProcessStart”方法之前执行“ide​​ntifyAlbumAsync”方法(因为这需要在不同的线程中执行),应用程序就会崩溃。在 Gracenote Demo 应用程序中,“audioProcessStart”方法持续运行,因此无需将其执行与“identifyAlbumAsync”方法调用同步。这是它应该使用的方式吗?如果至少在方法没有按顺序执行时应用程序没有崩溃,那将很方便。同样在我们的应用程序中,我们不希望像在演示应用程序中那样连续使用“audioProcessStart”方法。我们只想在用户请求识别时运行“audioProcessStart”方法,当识别到正在播放的歌曲时,我们想通过调用“audioProcessStop”来停止音频处理。是否有捷径可寻?现在,我们让运行“ide​​ntifyAlbumAsync”的线程休眠 2 秒,以确保应该运行“audioProcessStart”方法的线程有时间执行。预先感谢您的及时回复 正在运行睡眠 2 秒,以确保应该运行“audioProcessStart”方法的线程有时间执行。预先感谢您的及时回复 正在运行睡眠 2 秒,以确保应该运行“audioProcessStart”方法的线程有时间执行。预先感谢您的及时回复

4

2 回答 2

1

在即将发布的 1.2 版本中,IGnMusicIdStreamEvents 包含一个回调,表明音频处理已开始,并且 ID 可以与之同步,例如:

@Override
public void musicIdStreamProcessingStatusEvent( GnMusicIdStreamProcessingStatus status, IGnCancellable canceller ) {

    if (GnMusicIdStreamProcessingStatus.kStatusProcessingAudioStarted.compareTo(status) == 0) {
            try {
                    gnMusicIdStream.identifyAlbumAsync();

            } catch (GnException e) { }
        }

}   
于 2014-10-03T17:19:08.200 回答
0

感谢您的反馈,您对这个问题是正确的。不幸的是,现在睡觉是最好的解决办法。但我们将在即将发布的版本中添加对显式同步事件的支持,请继续关注。

于 2014-09-10T20:24:48.170 回答