Android - 是否可以找出哪个应用程序具有音频焦点?

Sta*_*wed 6 android android-audiomanager

我的手机上有一个应用程序,即使没有声音播放,它也能持续关注音频。作为应用程序开发人员,我想知道我是否能够通知用户它是哪个应用程序,或者我是否可以判断我的应用程序是否具有音频焦点?

iTe*_*ech 6

我强烈怀疑是否有任何公共 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
}
Run Code Online (Sandbox Code Playgroud)

您应该确保维持一个单一的,当你要求你的听众的情况下,放弃焦点,看到我的答案在这里解决与音频焦点常见问题

下面是一个例子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;
   }
}
Run Code Online (Sandbox Code Playgroud)