手把手教你打通车载蓝牙与手机app的音频信息传输&车载反向控制手机app

本文详细介绍了如何实现车载蓝牙与手机app之间的音频信息传输,包括使用MediaSession在Android 5.0及以后版本发送音频信息,以及通过BroadcastReceiver接收车载音频信息。此外,还讲解了如何利用BluetoothAvrcpController进行车载蓝牙对手机app的反向控制,通过反射技术处理相关方法。
摘要由CSDN通过智能技术生成

可以这样来进行简单的理解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(),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值