Managing Audio Playback

来源:互联网 发布:网络热词一个亿七个字 编辑:程序博客网 时间:2024/05/22 05:26

Controlling Your App’s Volume and Playback:

  1. 设置音频流
    setVolumeControlStream(AudioManager.STREAM_MUSIC); 除了闹铃外,一般都采取AudioManager.STREAM_MUSIC。

  2. 使用按键控制音乐播放,注册一个广播接受者,接受android.intent.action.MEDIA_BUTTON事件,如下:
    <receiver android:name=".RemoteControlReceiver">    <intent-filter>        <action android:name="android.intent.action.MEDIA_BUTTON" />    </intent-filter></receiver>

  3. 响应音乐按键的广播处理
    public class RemoteControlReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {            KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);            if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {                // Handle key press.            }        }    }}


Managing Audio Focus:

  1. 获取长效的音乐焦点

    AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);...// Request audio focus for playbac1fbckint result = am.requestAudioFocus(afChangeListener,                                 // Use the music stream.                                 AudioManager.STREAM_MUSIC,                                 // Request permanent focus.                                 AudioManager.AUDIOFOCUS_GAIN);   if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {    am.registerMediaButtonEventReceiver(RemoteControlReceiver);    // Start playback.}


     

  2. 获取短暂的音乐焦点

    // Request audio focus for playbackint result = am.requestAudioFocus(afChangeListener,                             // Use the music stream.                             AudioManager.STREAM_MUSIC,                             // Request permanent focus.                             AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);   if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {    // Start playback.}


     

 

Dealing with Audio Output Hardware

  1. 监听音频设备切换时
    private class NoisyAudioStreamReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {            // Pause the playback        }    }}private IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);private void startPlayback() {    registerReceiver(myNoisyAudioStreamReceiver(), intentFilter);}private void stopPlayback() {    unregisterReceiver(myNoisyAudioStreamReceiver);}

0 0
原创粉丝点击