0

バックグラウンドで音楽が流れているかどうかを確認するための簡単なデモが必要ですか? また、バックグラウンドで実行されている音楽には影響しません

here 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);

私が欲しいもののために追加する必要があるもの。このことを東にするのを手伝ってください。

4

1 に答える 1

1

あなたが投稿した現在のコードは、STREAM_MUSIC ストリームを検出するのではなく、実際に使用するように要求しているようです。これには2つのオプションがあると思います。

このメソッドは試していませんが、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
}

他のアプリから音楽ストリームを奪う可能性が高いため、これは非常に洗練されたソリューションではありません。ユースケースによって異なりますが、出発点になる可能性があります。

于 2013-09-18T15:27:21.580 に答える