0

Androidでオーディオ録音アプリケーションを開発しています。そのため、デバイスの音楽プレーヤーでバックグラウンド ミュージックが既に再生されている場合は、録音を開始する前に一時停止し、録音が停止または一時停止されるたびにバックグラウンド ミュージックを再開する必要があります。録音されたオーディオの再生中にも同じことが機能するはずです。このシナリオを乗り越えるために誰か助けてもらえますか? 前もって感謝します..:)

4

2 に答える 2

3

audioManagerを入手して確認する

audioManager.isMusicActive()

真であれば

private void toggleNativePlayer(Context context) {
    Intent intent = new Intent("com.android.music.musicservicecommand");
    intent.putExtra("command", "togglepause");
    context.sendBroadcast(intent);
}

録音が終了したら、このコードをもう一度実行して、musigの再生を再開します

于 2012-06-19T10:02:21.743 に答える
0

AudioFocusをリクエストすることで、他のアプリケーションによる音楽の再生を停止できます。AudioFocusが付与されると、他のアプリは音楽の再生を停止し、必要に応じて再生/録音できます。

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

// Request audio focus for playback
int result = am.requestAudioFocus(focusChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);


if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
// other app had stopped playing song now , so you can start recording.
}

ただし、AudioManager は 1 つしかありません。そのため、オーディオ フォーカスは、それを要求する各アプリケーションに1 つずつ割り当てられます。これは、別のアプリケーションがオーディオ フォーカスを要求した場合、アプリケーションはそれを失うことを意味します。オーディオ フォーカスの要求時に登録した Audio Focus Change Listener ( afChangeListener )の onAudioFocusChange ハンドラを通じて、オーディオ フォーカスの喪失が通知されます。

 private OnAudioFocusChangeListener focusChangeListener =
      new OnAudioFocusChangeListener() {
              public void onAudioFocusChange(int focusChange) {
                         AudioManager am =(AudioManager)getSystemService(Context.AUDIO_SERVICE);
                switch (focusChange) {

                       case (AudioManager.AUDIOFOCUS_LOSS) :
                       //Lost focus. Stop recording
                       break;

                       case (AudioManager.AUDIOFOCUS_GAIN) :
                       //Gained AudioFocus. Start recording tasks
                       break;
                       default: break;
        }
    }
};
于 2016-05-22T12:59:49.877 に答える