Gracenote (GNSDK) на Android Wear

Я пытаюсь разработать приложение для Android Wear, которое может идентифицировать песни с помощью GNSDK Gracenote. Я основываюсь на их примере приложения.

У меня проблемы с Wi-Fi на носимом устройстве. Пример приложения работает с точки зрения попытки идентификации песни, но отсутствует подключение к Интернету. (Хотя другие приложения работают отлично.)

Итак, что происходит: когда часы подключены к Wi-Fi и не подключены к телефону через Bluetooth, а исключительно через Wi-Fi, они работают. Теперь, подключив телефон к часам через Bluetooth, часы должны подключиться к Wi-Fi через телефон. И теперь связь больше не доступна. Так что идентификация через интернет телефона не работает. Кто-нибудь знает, в чем может быть причина и как устранить неисправность?

Если не:

Есть ли способ вместо полной идентификации альбома через GnMic получить только отпечаток пальца из объекта GnMusicIDStream? И если да, то как? Идея заключается в том, чтобы прослушать песню через GnMic на носимом устройстве, взять только отпечаток пальца и затем отправить его на мобильное устройство. Там определите песню, выполнив идентификацию на основе отпечатка пальца, и отправьте результат обратно на часы.

Надеюсь, у кого-то из вас есть идея, как решить проблему! Спасибо заранее! Любая помощь приветствуется!

Лучший, дмкскр


person dmkscr    schedule 23.06.2015    source источник


Ответы (1)


Из-за ограничений доступа к Интернету напрямую с устройства Wear необходимо передать на портативное устройство либо необработанные аудиобайты, либо отпечаток пальца через DataItem или MessageApi. (См. https://developer.android.com/training/wearables/data-layer/index.html для получения информации об этих API Wear.) Затем на устройстве вы можете создать отпечаток пальца и/или отправить запрос MusicID. Затем вам нужно снова использовать DataItem или MessageApi, чтобы передать данные результата обратно на устройство Wear для отображения.

При любом подходе (передача аудиобайтов или отпечатков пальцев на КПК) вам нужно работать с классом GnMusicId вместо GnMusicIdStream. Причина в том, что GnMusicIdStream автоматизирует несколько этапов рабочего процесса (запись звука, создание отпечатка пальца, выполнение запроса MusicID на основе отпечатка пальца) и не предоставляет перехватчики для выполнения этих действий по отдельности. GnMusicId — это класс более низкого уровня, который дает вам более детальный контроль над этим процессом.

Если вы решите передать аудиоданные на КПК, вы можете получить аудиобайты на устройстве Wear с помощью GnMic.getData(). Передайте байты аудиоданных на КПК через DataItem или MessageApi. Затем на портативном устройстве используйте следующие методы GnMusicId для создания отпечатка пальца и выполнения запроса MusicID:

  • fingerprintBegin(GnFingerprintType fpType, long audioSampleRate, long audioSampleSize, long audioChannels)
  • fingerprintWrite(byte[] audioData, long audioDataSize)
  • fingerprintEnd()
  • получение данных отпечатков пальцев()
  • findAlbums(java.lang.String fingerprintData, GnFingerprintType fpType)

При желании, если вы решите создать отпечаток пальца на устройстве Wear, выполните следующие действия.

  • Вызовите GnMusicId.fingerprintFromSource(IGnAudioSource audioSource, GnFingerprintType fpType) для создания отпечатка пальца, используя экземпляр GnMic в качестве IGnAudioSource.
  • Получите данные отпечатка пальца с помощью GnMusicId.fingerprintDataGet().
  • Передайте данные отпечатка пальца на КПК через DataItem или MessageApi.
  • На портативном компьютере вызовите GnMusicId.findAlbums(java.lang.String fingerprintData, GnFingerprintType fpType).
person Cain Wong    schedule 07.07.2015
comment
То, что мне было нужно, большое спасибо :) Именно это я и имел в виду (второй вариант), но как-то затерялся в документации GN. Сэр, я должен вам много времени! Хорошего дня. - person dmkscr; 08.07.2015