需要一个简单的演示,只检查背景音乐是 否正在运行? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我需要一个简单的演示,其中我想检查音乐是否在后台运行?并且也不会影响在Background中运行的音乐

我从这里读了study Link并制作了一个演示代码

演示代码在这里,但这不是给我O / P:

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN);
    int result = am.requestAudioFocus(new OnAudioFocusChangeListener() {

        @Override
        public void onAudioFocusChange(int focusChange) {
            if(//background Music is running )
            {}
            else{
                 //background Music is not running
            }
        }
    },AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);

需要添加什么才能满足我的需求。请帮助东方这件事。

android android-audiomanager
1个回答
1
投票

您发布的当前代码似乎是您实际上要求使用STREAM_MUSIC流而不是检测它。我相信你可能有两种选择。

我没试过这种方法,但听起来像AudioManager.isMusicActive()可能适合你。

它说,从这个页面

检查是否有任何音乐活动。

如果任何音乐曲目有效,则返回true。

你的另一个选择是使用AudioManager.OnAudioFocusChangeListener。您必须首先创建此侦听器,然后注册它以检测更改。这意味着您的应用需要在使用该流开始另一个应用之前在后台运行。

创建一个监听器(来自http://developer.android.com/training/managing-audio/audio-focus.html的示例)

OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
    public void onAudioFocusChange(int focusChange) {
        if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT) {
            // another app took the stream temporarily
        } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
            // another app let go of the stream
        } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
            // another app took full control of the stream
        }
    }
};

现在您可以注册侦听器并检测更改

int result = am.requestAudioFocus(afChangeListener,
                                 // Use the music stream.
                                 AudioManager.STREAM_MUSIC,
                                 // Request permanent focus.
                                 AudioManager.AUDIOFOCUS_GAIN);

if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
    // You successfully took control of the stream and can detect any future changes
}

这不是一个非常优雅的解决方案,因为您很可能会从其他应用程序中删除音乐流。这取决于您的使用案例,但它可能是一个起点。

© www.soinside.com 2019 - 2024. All rights reserved.