在 Android SDK 30 中,CONTROL_REQUEST_CODE 是用于校验 MediaBrowserCompat.ConnectionCallback 类回调函数 onConnected() 中的参数 options 中是否包含自定义字段的一个 int 类型的变量。
以下是使用 CONTROL_REQUEST_CODE 的示例代码:
在 MediaBrowserServiceCompat 类中:
//定义 CONTROL_REQUEST_CODE private static final int CONTROL_REQUEST_CODE = 123;
private MediaBrowserCompat mMediaBrowser;
//创建连接 @Override public void onCreate() { super.onCreate(); //创建 media browser 连接 mMediaBrowser = new MediaBrowserCompat( this, new ComponentName(this, MediaPlaybackService.class), new MediaBrowserConnectionCallback(), null ); mMediaBrowser.connect(); }
//连接回调函数 private class MediaBrowserConnectionCallback extends MediaBrowserCompat.ConnectionCallback { @Override public void onConnected() { super.onConnected();
//创建 MediaControllerCompat 对象
MediaControllerCompat mediaController = new MediaControllerCompat(
MediaPlaybackService.this,
mMediaBrowser.getSessionToken()
);
//这是一个自定义的 option 字段,用于告诉服务客户端希望使用的音频格式
Bundle options = new Bundle();
options.putInt(AUDIO_FORMAT_KEY, AudioFormat.AAC);
//发送控制命令
mediaController.sendCommand(
COMMAND_MEDIA_GET_AUDIO_INFO,
options,
new MediaControllerCompat.Callback() {
@Override
public void onResult(Bundle resultData) {
super.onResult(resultData);
//处理返回的结果
}
}
);
}
}
上述示例代码中,我们在 onConnected() 回调函数中发送控制命令,命令名称为 COMMAND_MEDIA_GET_AUDIO_INFO。options 参数中有一个自定义字段 AUDIO_FORMAT_KEY,表示希望使用的音频格式是 AAC。
通过 sendCommand() 函数发送控制命令时使用了 CONTROL_REQUEST_CODE,用于校验 options 参数中是否包含 AUDIO_FORMAT_KEY 自定义字段。
如果连接服务成功,并且 options 参数中包含自定义字段 AUDIO_FORMAT_KEY,MediaBrowserCompat.ConnectionCallback