ボリューム onResume をミュートし、ボリューム レベルを onPause で AudioManager に戻す必要がありますか?
または、これを行う別の適切な方法はありますか?
ありがとう!
あなたの答えはのドキュメントにあると思いますsetStreamMute()
。
ミュート コマンドは、クライアント プロセスの停止から保護されています。ストリーム上でアクティブなミュート要求を持つプロセスが停止した場合、このストリームは自動的にミュート解除されます。
特定のストリームに対するミュート リクエストは累積的です。AudioManager は 1 つ以上のクライアントから複数のミュート リクエストを受け取ることができ、同じ数のミュート解除リクエストが受信された場合にのみ、ストリームのミュートが解除されます。
ユーザー エクスペリエンスを向上させるために、アプリケーションは onPause() でミュートされたストリームのミュートを解除する必要があり、必要に応じて onResume() でミュートが再び行われます。
誰かが興味を持っている場合は、アプリがすべてをミュートしないようにするための回避策があります。次の操作を行うと、音量キーがミュートされ、着信コールの通知はシステムで構成されたままになります (強制的にミュートされるのではなく)。
setVolumeControlStream(AudioManager.STREAM_DTMF);
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamMute(AudioManager.STREAM_DTMF, true);