6

サウンドが再生されていないときでも、オーディオ フォーカスを取得し続ける電話のアプリがあります。アプリ開発者として、ユーザーにそれがどのアプリであるかを知らせることができるかどうか、またはアプリに音声フォーカスがあるかどうかを知ることができるかどうか疑問に思っていますか?

4

2 に答える 2

7

現時点でどのアプリが注目されているかを示すことができるパブリック API があるとは思えません。

アプリにオーディオ フォーカスがあるかどうかは、リクエストすることで追跡できます。次に例を示します。

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
boolean requestGranted = AudioManager.AUDIOFOCUS_REQUEST_GRANTED == audioManager.requestAudioFocus(listener, AudioManager.STREAM_MUSIC,
                    AudioManager.AUDIOFOCUS_GAIN);
if(requestGranted){
   // you now has the audio focus
}

フォーカスをリクエストして放棄するときは、リスナーの単一のインスタンスを維持するようにしてください。音声フォーカスに関する一般的な問題のトラブルシューティングについては、こちらの回答を参照してください。

次に例を示しonAudioFocusChange()ます。

@Override
public void onAudioFocusChange(int focus) {

  switch (focus) {
    case AudioManager.AUDIOFOCUS_LOSS:
        Log.d(TAG,"AUDIOFOCUS_LOSS");
        // stop and release your player
        break;
    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
        Log.d(TAG,"AUDIOFOCUS_LOSS_TRANSIENT");
        // pause your player
        break;
    case AudioManager.AUDIOFOCUS_GAIN:
        Log.d(TAG,"AUDIOFOCUS_GAIN");
        // restore volume and resume player if needed
        break;
    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
        Log.d(TAG,"AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
        // Lower volume
        break;
   }
}
于 2013-01-02T21:09:13.027 に答える