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

时间:2013-09-16 11:45:26

标签: android android-audiomanager

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

我从这里读到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);

需要为我想要的东西添加什么。请帮忙把它做成东西。

1 个答案:

答案 0 :(得分: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
}

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