gpt4 book ai didi

android - 使用onAudioFocusChange停止其他音乐应用

转载 作者:行者123 更新时间:2023-12-02 23:33:59 24 4
gpt4 key购买 nike

我正在尝试创建一个在后台播放音乐的广播应用程序,但是当我的应用程序和其他音乐应用程序同时播放音乐时,其他音乐应用程序存在问题,为此,我尝试使用AudioFocus解决此问题问题,我的下面的代码可以正常工作,但是在一个方向上

问题

  • (音乐应用程序,例如Google Play音乐)在我第一次运行我的应用程序时播放音乐,Google play Music停止播放音乐,而我的应用程序播放音乐( Works )
  • 我的应用程序在后台播放音乐,当我打开Goog​​le Play音乐时,我的应用程序停止播放音乐,而Google Play音乐播放音乐( Works )
  • 暂停播放Google Play音乐中的音乐,以允许我的应用恢复/重新开始播放音乐(不起作用)
  • 暂停从我的应用播放音乐,以允许Google Play音乐再次播放音乐(不起作用)

  • 我的代码:
     private AudioManager mAudioManager;
    boolean mAudioFocusGranted = false;
    private AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {

    @Override
    public void onAudioFocusChange(int focusChange) {
    switch (focusChange) {
    case AudioManager.AUDIOFOCUS_GAIN:
    mediaPlayer.start();
    MusicButton.setChecked(false);
    break;
    case AudioManager.AUDIOFOCUS_GAIN_TRANSIENT:
    mediaPlayer.start();
    MusicButton.setChecked(false);
    break;
    case AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK:
    mediaPlayer.start();
    MusicButton.setChecked(false);
    break;
    case AudioManager.AUDIOFOCUS_LOSS:
    mediaPlayer.pause();
    MusicButton.setChecked(true);
    break;
    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
    mediaPlayer.pause();
    MusicButton.setChecked(true);
    break;
    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
    mediaPlayer.setVolume(0.2f,0.2f);
    break;
    }
    }
    };
    SuppressLint({"CommitPrefEdits", "Assert"})
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    MusicButton = findViewById(R.id.toggleButton);
    mAudioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
    if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
    mAudioFocusGranted = true;
    } else if (result == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
    MusicButton.setChecked(true);
    mediaPlayer.pause();
    }
    }

    请有人帮我解决这个问题
    *对不起我的英语不好

    最佳答案

    如果您想接受它作为答复,这是我上面的评论的摘要:

    暂停一个应用程序中的音乐/音频通常不会触发焦点更改,而焦点更改将导致另一应用程序恢复。该应用程序必须调用abandonAudioFocus()或abandonAudioFocusRequest(audioFocusRequest),通常应响应stop()而不是pause()来调用它们。

    在Google音乐中轻按暂停不会触发您的关注。你对此无能为力。如果用户暂停Google音乐并想恢复您的应用,他们将在您的应用中手动点按“播放”,或者在仍然可见时通过您的媒体通知。

    如果您想在暂停后恢复Google音乐,则必须在暂停MediaPlayer之后调用abandonAudioFocus来放弃焦点。再次,尽管用户不一定从暂停按钮期望这种行为。

    关于android - 使用onAudioFocusChange停止其他音乐应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48329178/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com