3

私は Google Speech Recognition を使用して継続的な認識を行っています。これは、数秒ごとにビープ音 (ジェリービーンのバグ) を回避するために、システムの音量をミュートおよびミュート解除する必要があることを意味します。

これを行うには、次を使用します。

mAudioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);

false の場合も同じです。

私が抱えている問題は、多くのデバイスで散発的かつ再現可能であり、アンインストールまたは再起動するまでシステム ボリュームがミュート状態で「ロック」されることです。

サービスが停止したときにシステム ボリュームのミュートを解除するようにしていますが、影響はないようです。

おそらく、AudioManager がミュート解除とミュートをそれほど頻繁に行うように意図されていないためでしょうか? どんな助けでも大歓迎です。

4

1 に答える 1

3

setStreamMute の Android ドキュメント:

オーディオ ストリームをミュートまたはミュート解除します。

...

特定のストリームに対するミュート リクエストは累積的です。AudioManager は 1 つ以上のクライアントから複数のミュート リクエストを受け取ることができ、同じ数のミュート解除リクエストが受信された場合にのみ、ストリームのミュートが解除されます。

...

これが結局問題になりました。このロックの原因となったエラーがあった場合、ミュートを解除するよりも多くのミュートを呼び出していました。

于 2013-10-19T01:01:39.263 に答える