RemoteControlClient的使用

http://blog.csdn.net/liu149339750/article/details/31406701



RemoteControlClient的使用

1975人阅读 评论(5) 收藏 举报

 RemoteControlClient是从API 14也就是android 4.0开始出现的类,用于在锁屏状态控制音乐播放。界面是系统提供的。

api doc文档上附了一段注册代码


ComponentName myEventReceiver = new ComponentName(getPackageName(), MyRemoteControlEventReceiver.class.getName());
 AudioManager myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
 myAudioManager.registerMediaButtonEventReceiver(myEventReceiver);
 // build the PendingIntent for the remote control client
 Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
 mediaButtonIntent.setComponent(myEventReceiver);
 PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0);
 // create and register the remote control client
 RemoteControlClient myRemoteControlClient = new RemoteControlClient(mediaPendingIntent);
 myAudioManager.registerRemoteControlClient(myRemoteControlClient);





上面的代码开始时注册了耳机按键的事件,接着注册了RemoteControlClient。

要想弄出RemoteControlClient的界面,上面的代码还不够,还需要把当前音乐状态设置为正在播放

  1. mClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING)  

并且必须获取当前的stream focus

  1. am.requestAudioFocus(new OnAudioFocusChangeListener() {  
  2.       
  3.     @Override  
  4.     public void onAudioFocusChange(int focusChange) {  
  5.         System.out.println("focusChange = " + focusChange);  
  6.     }  
  7. }, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);  

这样,在锁屏状态系统界面就能出现了,默认只有一个播放暂停按钮。要想显示额外的信息,使用editMetadata(boolean startEmpty)去put,如果想多显示几个控制按钮,如下:

  1. int flags = RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS  
  2.         | RemoteControlClient.FLAG_KEY_MEDIA_NEXT  
  3.         | RemoteControlClient.FLAG_KEY_MEDIA_PLAY  
  4.         | RemoteControlClient.FLAG_KEY_MEDIA_PAUSE  
  5.         | RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE  
  6.         | RemoteControlClient.FLAG_KEY_MEDIA_STOP;  
  7. mClient.setTransportControlFlags(flags);  


所有按键的响应事件都在注册的receiver中。

























http://www.android-doc.com/home/reference/android/media/RemoteControlClient.html



RemoteControlClient enables exposing information meant to be consumed by remote controls capable of displaying metadata, artwork and media transport control buttons.

A remote control client object is associated with a media button event receiver. This event receiver must have been previously registered withregisterMediaButtonEventReceiver(ComponentName) before the RemoteControlClient can be registered through registerRemoteControlClient(RemoteControlClient).

Here is an example of creating a RemoteControlClient instance after registering a media button event receiver:

ComponentName myEventReceiver = new ComponentName(getPackageName(), MyRemoteControlEventReceiver.class.getName());
 AudioManager myAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
 myAudioManager.registerMediaButtonEventReceiver(myEventReceiver);
 // build the PendingIntent for the remote control client
 Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
 mediaButtonIntent.setComponent(myEventReceiver);
 PendingIntent mediaPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, mediaButtonIntent, 0);
 // create and register the remote control client
 RemoteControlClient myRemoteControlClient = new RemoteControlClient(mediaPendingIntent);
 myAudioManager.registerRemoteControlClient(myRemoteControlClient);






https://stuff.mit.edu/afs/sipb/project/android/docs/reference/android/media/RemoteControlClient.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值