android - 当其他音频已开始在设备上播放时停止我的音频

标签 android

我正在使用 MediaPlayer 类播放音频。我有一个要求,当用户开始在设备上播放其他一些歌曲时,我的应用程序播放的音频应该自动停止。如何在我的应用程序的设备上开始播放其他音频时收到通知?请指教。

更新:

我试过这段代码,第一次成功。即,当我启动我的应用程序并在我的应用程序中播放音频时,我的应用程序正在播放音频。然后,当我打开一些音乐播放器并在那里播放一些其他音频时,我的应用程序检测到“AUDIOFOCUS_LOSS”中的通知。我在这里停止我的音频。然后再次在我的应用程序中播放音频,然后返回音乐播放器并在那里播放一些其他音频,这次我的应用程序没有检测到此通知,所以我无法再次停止我的音频。这是我现在的问题。

有人可以帮我解决这个问题吗?

    public class MyActivity extends ActionBarActivity implements OnCompletionListener, OnPreparedListener, OnErrorListener, OnBufferingUpdateListener, AudioManager.OnAudioFocusChangeListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hclsquad_fm);

        audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
  }
 @Override
    public void onAudioFocusChange(int focusChange) {

        switch (focusChange) {
            case AudioManager.AUDIOFOCUS_GAIN:
                Toast.makeText(MyActivity.this, "Focus GAINED", Toast.LENGTH_LONG).show();
                break;
            case AudioManager.AUDIOFOCUS_LOSS:
            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                Toast.makeText(MyActivity.this, "Focus LOSS", Toast.LENGTH_LONG).show();
                if(mediaPlayer != null)
                    killMediaPlayer();
                break;
            case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                Toast.makeText(MyActivity.this, "Focus LOSS TRANSIENT", Toast.LENGTH_LONG).show();
                break;
            default:
        }
    }

最佳答案

试试下面的代码。我找到了这个答案 here

OnAudioFocusChangeListener listener = new OnAudioFocusChangeListener() {
  public void onAudioFocusChange(int focusChange) {
if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK){
      // Lower the volume
} else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
            // Raise it back to normal
       }    
  }    
}; 

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int request = am.requestAudioFocus(listener,
AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);

关于android - 当其他音频已开始在设备上播放时停止我的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29764114/

相关文章:

android - 如何使用android studio protobuf插件编译protobuf消息实现Parcelable?

android - 如何在线性布局的一侧绘制边框?

java - 将弹出菜单与 RecyclerView 项目中的右侧对齐

java - 动态添加多个水平线性布局到选项卡

具有自定义布局按钮样式的 Android 对话 appcompat

javascript - 如何检查/转储 Ionic 变量

android - java.lang.RuntimeException 主题.Sherlock

android - 'kotlin-kapt' 插件未使用“kapt.generateStubs”

android - 为什么我的 opengl 输出因各种设备而异?

android - 在 Android 上测试代码覆盖率有哪些替代方案?