可以这样来进行简单的理解profile标致了一种能力,他定义 了设备之间如何进行交互,比如我们跨设备调用的AVRCP是定义如何进行跨设备调用的。每一个协议多有自己的profile(要看系统有没有实现对应的功能,如果不需要可以没有对应的profile)。
音频信息如何发送给车载蓝牙
在android5.0之前的音频信息发送是通过RemoteControlClient来完成的。5.0之后是通过MediaSession来完成。
MediaSession能够进行播放器音量、按键和数据传输控制的类。一般而言一个应用程序只有一个MediaSession。
如果想要接收其它设备的调用控制需要调用 setActive(true)和setCallback(Callback)。
音频信息的发送
通过MediaSession#setMetadata(@Nullable MediaMetadata metadata)可以发送当前歌曲信息,
在MediaMetadata 定义了很多相关的key,数据发送端只需要按照对应的key添加数据即可
MediaSession#setPlaybackState(@Nullable PlaybackState state)可以发送与播放状态相关的信息。
播放器数据发送:
mediaSession = new MediaSession(BluetoothPlayerActivity.this, “test”);
mediaSession.setActive(true);
mediaSession.setMetadata(new MediaMetadata.Builder()
.putString(MediaMetadata.METADATA_KEY_TITLE, “你是风而我是沙”)
.putString(MediaMetadata.METADATA_KEY_ARTIST, “我是谁谁谁”)
.build());
Toast.makeText(BluetoothPlayerActivity.this,“已经开始执行发送信息,重置需要退出重进”,Toast.LENGTH_SHORT).show();
AppExecutors.getInstance().networkIO().execute(new Runnable() {
@Override
public void run() {
int i = 0;
while (!destroy){
Log.d(TAG,"update PlaybackState "+mediaPlayer.getCurrentPosition());
mediaSession.setPlaybackState(new PlaybackState.Builder()
.setState(PlaybackState.STATE_PLAYING, mediaPlayer.getCurrentPosition(),