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远程控制类实现,到此需求完成。。。。

你可能感兴趣的:(android 音频开发蓝牙与PC端连接,实现PC端同步手机信息)