当前位置: 首页 > 知识库问答 >
问题:

在android中自动恢复背景音乐播放

蒋栋
2023-03-14

如何在外部媒体文件关闭后自动恢复音乐文件?

共有1个答案

羊舌新荣
2023-03-14

我想你是在寻找控制音频焦点。本文讨论了当另一个应用程序/您的应用程序控制音频焦点时如何实现更改,即增益调整(降低音量)。

mAudioManager = (AudioManager) Context.getSystemService(Context.AUDIO_SERVICE);
mPlaybackAttributes = new AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_GAME)
        .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
        .build();
mFocusRequest = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN)
        .setAudioAttributes(mPlaybackAttributes)
        .setAcceptsDelayedFocusGain(true)
        .setOnAudioFocusChangeListener(mMyFocusListener, mMyHandler)
        .build();
mMediaPlayer = new MediaPlayer();
final Object mFocusLock = new Object();

boolean mPlaybackDelayed = false;
boolean mPlaybackNowAuthorized = false;

// ...
int res = mAudioManager.requestAudioFocus(mFocusRequest);
synchronized(mFocusLock) {
    if (res == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
        mPlaybackNowAuthorized = false;
    } else if (res == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
        mPlaybackNowAuthorized = true;
        playbackNow();
    } else if (res == AudioManager.AUDIOFOCUS_REQUEST_DELAYED) {
       mPlaybackDelayed = true;
       mPlaybackNowAuthorized = false;
    }
}

// ...
@Override
public void onAudioFocusChange(int focusChange) {
    switch (focusChange) {
        case AudioManager.AUDIOFOCUS_GAIN:
            if (mPlaybackDelayed || mResumeOnFocusGain) {
                synchronized(mFocusLock) {
                    mPlaybackDelayed = false;
                    mResumeOnFocusGain = false;
                }
                playbackNow();
            }
            break;
        case AudioManager.AUDIOFOCUS_LOSS:
            synchronized(mFocusLock) {
                mResumeOnFocusGain = false;
                mPlaybackDelayed = false;
            }
            pausePlayback();
            break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            synchronized(mFocusLock) {
                mResumeOnFocusGain = true;
                mPlaybackDelayed = false;
            }
            pausePlayback();
            break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
            // ... pausing or ducking depends on your app
            break;
        }
    }
}

但请注意文件中所述:

永久性焦点丧失

 类似资料:
  • 我正在尝试在Frame窗口的背景中播放音频文件,我发现它比添加图片要复杂得多。 我找到了一个“教程”,应该如何添加音乐,它似乎相当简单,至少在所需的代码量方面。但是,我无法播放音频文件,它在说两件事…… 我试图播放一个我复制到我的java项目中的音频文件,它告诉我它找不到那个文件或目录。 第二-我给了这个方法一个音频文件的路径,它告诉我… 请记住,我很新,这个教程没有给很多帮助,所以我不知道这个游

  • 在SetCompressor lzma后面加以下代码: ReserveFile "${NSISDIR}\Plugins\system.dll" ReserveFile "天鹅湖.mp3" 然后在 Section 区段后面加入 Function 区段: Function .onInit InitPluginsDir File "/oname=$PLUGINSDIR\bgm_天鹅湖.mp3"

  • 通过下面的方式,播放一个音频文件作为背景音乐,可以控制背景音乐是否循环播放。 #include "SimpleAudioEngine.h" using namespace CocosDenshion; auto audio = SimpleAudioEngine::getInstance(); // set the background music and continuously play

  • 本文向大家介绍jquery控制背景音乐开关与自动播放提示音的方法,包括了jquery控制背景音乐开关与自动播放提示音的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jquery控制背景音乐开关与自动播放提示音的方法。分享给大家供大家参考。具体如下: 很多人初学网页制作时在网页中加入一段背景音乐,听到音乐响起的那一刻往往都会有一丝的成就感。 这里就为大家讲解如何使用js控制背景音乐播放

  • 我试图使用JavaFX创建一个游戏。我一直试图在游戏中插入一些背景音乐。音乐是兼容的. mp3文件。我目前正在使用来播放每个。每个媒体文件由实际循环和循环的小(可选)介绍音乐组成。如何使用JavaFX实现流畅的音频播放。 我尝试过的方法: > 使用作为一个文件;我尝试改变,。当我进入循环时,音乐的持续时间似乎缩短了。然而,音乐在介绍处重新开始,在错误的地方结束。就好像根本没有抵消音乐。 使用作为两

  • 本文向大家介绍C#播放背景音乐的方法小结,包括了C#播放背景音乐的方法小结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了C#播放背景音乐的方法。分享给大家供大家参考。具体分析如下: 最经在写winform程序,其中有用到播放背景音乐 特此收集了一些网上的教程: 1、调用非托管的dll 2、播放系统自带声音 3、使用System.Media.SoundPlayer播放wav 4、使用MCI