Приложение, использующее мобильный Android GNSK, аварийно завершает работу при вызове identifAlbumAsync() до audioProcessStart()

Я обновлял приложение для использования нового мобильного Android GNSK, но заметил, что использовать новый MusicID-Stream немного сложно. Если метод identifidAlbumAsync выполняется перед методом audioProcessStart (поскольку его необходимо выполнить в другом потоке), приложение просто завершается сбоем. В демонстрационном приложении Gracenote метод audioProcessStart работает постоянно, поэтому нет необходимости синхронизировать его выполнение с вызовом метода identifAlbumAsync. Это так, как это должно быть использовано? Будет удобно, если приложение не аварийно завершится, по крайней мере, если методы не выполняются по порядку. Также в нашем приложении мы не хотим, чтобы метод "audioProcessStart" работал непрерывно, как это делается в демонстрационном приложении. Мы хотим запускать метод "audioProcessStart" только тогда, когда пользователь запрашивает идентификацию и когда идентифицируется воспроизводимая песня, мы хотим остановить обработку аудио, вызвав "audioProcessStop". Есть простой способ сделать это? Прямо сейчас мы получаем поток, в котором "identifAlbumAsync" работает в спящем режиме в течение 2 секунд, чтобы убедиться, что поток, в котором должен выполняться метод "audioProcessStart", имеет время для выполнения. Заранее благодарю за быстрый ответ

2 ответа

Решение

Спасибо за отзыв, вы правы в этом вопросе. К сожалению, сейчас сон - лучшее решение. Но мы добавляем поддержку явного события синхронизации в следующем выпуске, пожалуйста, следите за обновлениями.

В следующем выпуске 1.2 IGnMusicIdStreamEvents включает функцию обратного вызова, которая сигнализирует о начале обработки звука, и ID может быть синхронизирован с этим, например:

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

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

            } catch (GnException e) { }
        }

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