Androidの音声認識APIを使用するすべての人にとって、コールバックにさまざまなイベントをプッシュする登録可能な便利なRecognitionListenerがありました。特に、次のonBufferReceived(byte[])
方法がありました。
public abstract void onBufferReceived (byte[] buffer)
以来:APIレベル8より多くのサウンドが受信されました。この機能の目的は、キャプチャされたオーディオに関してユーザーにフィードバックを提供できるようにすることです。このメソッドが呼び出される保証はありません。
パラメータ
buffer
は、シングルチャネルオーディオストリームを表すビッグエンディアンの16ビット整数のシーケンスを含むバッファです。サンプルレートは実装に依存します。
このメソッドは、呼び出される保証がないことを明示的に示していますが、ICSおよびそれ以前では、実質的に100%の時間呼び出されます。少なくとも、この方法で受信したすべてのバイトを連結することで、オーディオストリーム全体を再生します。
ただし、何らかの理由で、Jellybean SDKでは、これが魔法のように機能しなくなりました。非推奨の通知はなく、コードはコンパイルされますが、がonBufferReceived
呼び出されることはありません。技術的には、これはAPIを壊しているわけではありませんが(メソッドが呼び出される「保証はない」と書かれているため)、明らかにこれは、この動作に依存する多くのものにとって壊滅的な変更です。
この機能が無効にされた理由と、Jellybeanでその動作を複製する方法があるかどうかを誰かが知っていますか?
明確化:すべてRecognizerIntent
が複数の実装(Playストアで入手可能なものを含む)とのインターフェースであり、それぞれがで何をするかを選択できることを理解していますRecognitionListener
。私は特に、Jellybean電話の大部分が使用するデフォルトのGoogle実装について言及しています。