在最近的項目中无切,遇到了一個在手機與pc端連接藍牙播放音樂時荡短,需要將手機播放的信息跟pc同步。
后面自己查了一些文檔哆键,發(fā)現(xiàn)實現(xiàn)此需求跟 RemoteControlClient? 類有直接關(guān)系掘托。
RemoteControlClient是從API 14也就是android 4.0開始出現(xiàn)的類,用于在鎖屏狀態(tài)控制音樂播放籍嘹。界面是系統(tǒng)提供的闪盔。
在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的界面泪掀,上面的代碼還不夠,還需要把當前音樂狀態(tài)設(shè)置為正在播放识补。
當然設(shè)置了 這些還不夠族淮,必須獲取音頻焦點,最好是在服務(wù)中獲取凭涂,下面是請求音頻焦點的代碼:
am.requestAudioFocus(new?OnAudioFocusChangeListener()?{??
@Override??
public?void?onAudioFocusChange(int?focusChange)?{??
System.out.println("focusChange?=?"?+?focusChange);??
????}??
},?AudioManager.STREAM_MUSIC,?AudioManager.AUDIOFOCUS_GAIN);??
這樣祝辣,在鎖屏狀態(tài)系統(tǒng)界面就能出現(xiàn)了,默認只有一個播放暫停按鈕切油。要想顯示額外的信息蝙斜,使用editMetadata(boolean startEmpty)去put,如果想多顯示幾個控制按鈕澎胡,如下:
int?flags?=?RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS??
????????|?RemoteControlClient.FLAG_KEY_MEDIA_NEXT??
????????|?RemoteControlClient.FLAG_KEY_MEDIA_PLAY??
????????|?RemoteControlClient.FLAG_KEY_MEDIA_PAUSE??
????????|?RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE??點擊查看api
????????|?RemoteControlClient.FLAG_KEY_MEDIA_STOP;??
mClient.setTransportControlFlags(flags);??
當然此鎖屏方式可能在某些機型上無法實現(xiàn)孕荠,這是因為出廠商可能在設(shè)備上做出了修改,或者是api過時所導(dǎo)致的攻谁。在最新的官方文檔上可以看到推薦使用?MediaSession? ? ? ?? ? ? 地址是: https://developer.android.com/reference/android/media/session/MediaSession.html.
實際上音頻開發(fā)藍牙與PC端連接同步與系統(tǒng)鎖屏是基于同一個RemoteControlClient遠程控制類實現(xiàn)稚伍,到此需求完成。。杀狡。伙菜。