ドキュメントでは、次のように述べられています。
muteコマンドは、クライアントプロセスの停止から保護されています。ストリームでアクティブなミュート要求があるプロセスが停止すると、このストリームは自動的にミュート解除されます。
特定のストリームのミュート要求は累積的です。AudioManagerは1つ以上のクライアントから複数のミュート要求を受信でき、同じ数のミュート解除要求が受信された場合にのみストリームのミュートが解除されます。
さて、最初の段落は本当です。プロセスが停止するたびに、ミュートしたすべてのストリームが自動的にミュート解除されます。しかし、何度呼んsetStreamMute(someStream, false)
でも、決してミュートを解除することはありません。前回、1回だけミュートした後、100万回以上呼び出してみましたが、何も起こりません。
ちなみに、同じ方法でミュートを解除すると、ミュートされたままになります。しかし、同じメソッドへの次の呼び出しでは、ミュートが解除されることはありません。
アラームマネージャーの使用を開始するBroadcastReceiveronReceiveメソッドでミュートしています。それで、ミュート呼び出しとミュート解除呼び出しの間の間に私のアプリが強制終了されたためかもしれませんか?(しかし、私のアプリはまだRAMに残っています)
この問題は、AlarmManagerへの参照を保持していないことが原因である可能性があります(毎回異なるインスタンスを取得していますか?)
誰かがこの問題に遭遇しましたか?