为什么abandonAudioFocus在Android音乐应用程序中不起作用

发布于 2024-12-08 17:34:07 字数 530 浏览 5 评论 0原文

我使用此代码来获取 AudioFocus,它可以正常工作
Android 音乐应用程序(预装的)

int result = audioManager.requestAudioFocus(meService, AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);    

但是当我使用此代码发布它时,

audioManager.abandonAudioFocus(meService);

Android 音乐应用程序(预装的)不会继续播放。

如果我使用AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK它就可以工作
但 Android 音乐应用程序无法充分降低音量。

有什么想法为什么 Android 音乐应用程序不恢复播放吗?

我正在使用 api8 并使用 onAudioFocusChange

Im using this code to get AudioFocus and it works ok with
Android Music app ( the one preinstalled )

int result = audioManager.requestAudioFocus(meService, AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);    

However when i release it with this code

audioManager.abandonAudioFocus(meService);

The Android Music app ( the one preinstalled ) does not continue playing.

if i use the AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK it works
but Android Music app is not lowering the volume enough.

Any ides why Android Music app is not resuming playback?

im using api8 and using the onAudioFocusChange

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

羁绊已千年 2024-12-15 17:34:07

您应该在 MediaPlay.onCompleteListener(){} 中释放它

You should release it in MediaPlay.onCompleteListener(){}

半窗疏影 2024-12-15 17:34:07

尝试了 4 名玩家后,他们都没有躲闪。我可能做错了什么并且希望看到这一点。我回答我自己的问题,我们必须忍受这一点。

After trying 4 players non of them are ducking. I might be doing something wrong and would like to see that. I answer my own question that we have to live with this.

烟雨凡馨 2024-12-15 17:34:07

这种方式对我来说效果很好。

public class HomeActivity extends Activity implements AudioManager.OnAudioFocusChangeListener {


 // Other stuff

    @Override
    public void onAudioFocusChange(int focusChange) {
        if (focusChange == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
            Log.i("HomeActivity", "Audio focus granted.");
        }else if (focusChange == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
            Log.i("HomeActivity", "Audio focus failed.");
        }
    }
}

请求 AudioFocus

private void requestAudioFocus(){
        AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
        // Request audio focus for playback
        am.requestAudioFocus(this,
                // Use the music stream.
                AudioManager.STREAM_MUSIC,
                // Request permanent focus.
                AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
}

放弃 AudioFocus

private void abandonAudioFocus(){
        AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
        am.abandonAudioFocus(this);
}

希望这对您有帮助。

This way works fine for me.

public class HomeActivity extends Activity implements AudioManager.OnAudioFocusChangeListener {


 // Other stuff

    @Override
    public void onAudioFocusChange(int focusChange) {
        if (focusChange == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
            Log.i("HomeActivity", "Audio focus granted.");
        }else if (focusChange == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
            Log.i("HomeActivity", "Audio focus failed.");
        }
    }
}

Request AudioFocus:

private void requestAudioFocus(){
        AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
        // Request audio focus for playback
        am.requestAudioFocus(this,
                // Use the music stream.
                AudioManager.STREAM_MUSIC,
                // Request permanent focus.
                AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
}

Abandon AudioFocus:

private void abandonAudioFocus(){
        AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
        am.abandonAudioFocus(this);
}

Hope this would help you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文