android 音频开发蓝牙与PC端连接,实现PC端同步手机信息

在最近的项目中,遇到了一个在手机与pc端连接蓝牙播放音乐时,需要将手机播放的信息跟pc同步。

后面自己查了一些文档,发现实现此需求跟 RemoteControlClient  类有直接关系。

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的界面,上面的代码还不够,还需要把当前音乐状态设置为正在播放。

当然设置了 这些还不够,必须获取音频焦点,最好是在服务中获取,下面是请求音频焦点的代码:

am.requestAudioFocus(new OnAudioFocusChangeListener() {  


@Override  

public void onAudioFocusChange(int focusChange) {  

System.out.println("focusChange = " + focusChange);  

    }  

}, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);  

这样,在锁屏状态系统界面就能出现了,默认只有一个播放暂停按钮。要想显示额外的信息,使用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);  

当然此锁屏方式可能在某些机型上无法实现,这是因为出厂商可能在设备上做出了修改,或者是api过时所导致的。在最新的官方文档上可以看到推荐使用 MediaSession             地址是: https://developer.android.com/reference/android/media/session/MediaSession.html.

实际上音频开发蓝牙与PC端连接同步与系统锁屏是基于同一个RemoteControlClient远程控制类实现,到此需求完成。。。。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容