2012-06-19 287 views
0

我正在开发android中的音频记录应用程序。因此,如果任何背景音乐已经在设备音乐播放器中播放,那么在开始录制之前应该暂停,并且只要录制停止或暂停,背景音乐就会恢复。在播放录制的音频时同样可以工作。任何人都可以帮我解决这个问题吗?在此先感谢.. :)如何在Android中录制音频时暂停背景音乐

回答

2

得到audioManager和检查

audioManager.isMusicActive() 

如果属实

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

,并再次完成录制运行此代码后,开始播放musig再次

+0

Yaay!它得到了工作.. :) :) ..谢谢 –

+1

不工作了。谷歌现在正在削减这种广播。 –

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。所以,音频焦点被分配给每个请求它的应用程序一个接一个。这意味着如果另一个应用程序请求音频焦点,您的应用程序将失去它。通过您请求音频焦点时注册的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; 
     } 
    } 
};