我正在尝试开发一款可以识别Gracenote GNSDK歌曲的Android Wear应用。我正在构建他们的示例应用程序。
我在可穿戴设备上遇到Wifi问题。示例应用程序正在进行歌曲识别尝试,但错过了互联网连接。 (尽管其他应用程序运行良好。)
所以会发生什么:当手表处于Wifi状态并且未通过蓝牙连接到手机但仅通过Wifi时它可以工作。现在通过蓝牙将手机连接到手表,手表应该通过手机连接到Wifi。现在连接已不再可用。因此,通过手机上网进行识别是行不通的。有没有人知道可能是什么原因以及如何排除故障?
如果不是:
有没有办法,而不是通过GnMic进行完整的专辑识别,只从GnMusicIDStream对象中获取指纹?如果是这样,怎么样?其背后的想法是通过GnMic在可穿戴设备上收听歌曲,只抓取指纹,然后将其发送到移动设备。在那里,通过根据指纹进行识别来识别歌曲,并将结果发回手表。
希望你们其中一个人知道如何解决这个问题!提前谢谢了!任何帮助表示赞赏!最佳, dmkscr
答案 0 :(得分:1)
由于直接从Wear设备访问互联网的限制,您必须通过 DataItem 或 MessageApi 将原始音频字节或指纹传递到手持设备。 (有关这些Wear API的信息,请参阅https://developer.android.com/training/wearables/data-layer/index.html。)然后,您可以在设备上生成指纹和/或提交MusicID查询。然后,您需要再次使用 DataItem 或 MessageApi 将结果数据传递回Wear设备进行显示。
使用任一方法(将音频字节或指纹传递到掌上电脑),您需要使用 GnMusicId 类而不是 GnMusicIdStream 。原因是 GnMusicIdStream 自动执行多个工作流程步骤(捕获音频,生成指纹,根据指纹执行MusicID查询),并且不提供单独执行它们的挂钩。 GnMusicId 是一个较低级别的类,可让您对此过程进行更细粒度的控制。
如果您选择将音频数据传递到掌上电脑,则可以使用 GnMic.getData()在Wear设备上获取音频字节。通过 DataItem 或 MessageApi 将音频数据字节传递到掌上电脑。然后,在掌上电脑上, 使用以下 GnMusicId 方法生成指纹并执行MusicID查询:
或者,如果您选择在Wear设备上生成指纹,请执行以下操作