我正在升级一个应用程序来使用新的,但是我注意到使用新的MusicID有点棘手。如果"identifyAlbumAsync“方法在"audioProcessStart”方法之前被执行(因为这需要在不同的线程中执行),那么应用程序就会崩溃。在Gracenote应用程序中,"audioProcessStart“方法一直在运行,因此不需要将其执行与"identifyAlbumAsync”方法调用同步。这是应该使用的方式吗?如果应用程序没有崩溃,至少在方法没有按顺序执行时是方便的。同样在我们的应用程序中,我们不希望"audioProcessStart“方法像在演示应用程序中所做的那样持续存在。我们只想运行"audioProcessStart“方法,当用户请求识别和当歌曲播放被识别时,我们希望通过调用"audioProcessStop”来停止音频处理。有什么简单的方法吗?现在,我们将在"identifyAlbumAsync“运行的线程中休眠2秒,以确保运行"audioProcessStart”方法的线程有时间执行。谢谢您的及时答复。
发布于 2014-09-10 12:24:48
谢谢你的反馈,在这个问题上你是对的。不幸的是,现在睡觉是最好的解决办法。但是我们在即将发布的版本中添加了对显式同步事件的支持,请继续关注。
发布于 2014-10-03 09:19:08
在即将发布的1.2版中,IGnMusicIdStreamEvents包含一个回调,信号音频处理已经启动,一个ID可以与此同步,例如:
@Override
public void musicIdStreamProcessingStatusEvent( GnMusicIdStreamProcessingStatus status, IGnCancellable canceller ) {
if (GnMusicIdStreamProcessingStatus.kStatusProcessingAudioStarted.compareTo(status) == 0) {
try {
gnMusicIdStream.identifyAlbumAsync();
} catch (GnException e) { }
}
}
https://stackoverflow.com/questions/25724072
复制相似问题