Нужна простая демонстрация только для проверки того, работает ли фоновая музыка или нет?

Мне нужна простая демонстрация, в которой я хочу проверить, играет ли музыка в фоновом режиме или нет? И также не влияет на музыку, которая работает в фоновом режиме.

Я прочитал здесь ссылка для изучения и сделал демонстрационный код

Демонстрационный код здесь, но он не дает мне 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);

Что нужно добавить для того, что я хочу. Пожалуйста, помогите сделать это на восток.


person Akarsh M    schedule 16.09.2013    source источник
comment
.get запущенный сервис и имя пакета   -  person QuokMoon    schedule 16.09.2013
comment
@altaf: я хочу только Toast, работает ли музыка или нет   -  person Akarsh M    schedule 16.09.2013
comment
Вы пытаетесь определить, воспроизводится ли ваше приложение в музыкальном потоке или просто какое-либо приложение, использующее его?   -  person Kirk    schedule 17.09.2013
comment
@Kirk: если какое-либо другое приложение воспроизводит музыку, но когда я открываю свое приложение. Мне будет указано, что музыка в фоновом режиме находится в рабочем режиме.   -  person Akarsh M    schedule 18.09.2013


Ответы (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
}

Это не очень элегантное решение, так как вы, скорее всего, заберете музыкальный поток из других приложений. Это зависит от вашего варианта использования, но может быть отправной точкой.

person Kirk    schedule 18.09.2013