我想将蓝牙编解码器类型从 AAC 更改为 SBC。这是一个非常新的功能,文档还不完整。 BluetoothAdapter
我尝试了“setCodecConfigPreference”但现在不支持....
// Manifest
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" tools:ignore="ProtectedPermissions" />
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// API 33+ ----------------------------------------------------//
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
val permissions = arrayOf(
android.Manifest.permission.BLUETOOTH,
android.Manifest.permission.BLUETOOTH_PRIVILEGED,
android.Manifest.permission.BLUETOOTH_ADMIN,
android.Manifest.permission.BLUETOOTH_CONNECT,
android.Manifest.permission.BLUETOOTH_SCAN
)
if (applicationContext.checkSelfPermission(android.Manifest.permission.BLUETOOTH) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, permissions,0)
}
val device = BluetoothDevice.DEVICE_TYPE_CLASSIC
val codec = BluetoothCodecConfig.Builder()
.setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC)
.build()
// HOW DO I APPLY THIS ???
}
}
您需要首先设置 SDK 以使用 Android 14 预览 SDK,如此处所述(请参阅文档了解完整详细信息):
android {
compileSdkPreview "UpsideDownCake"
...
defaultConfig {
targetSdkPreview "UpsideDownCake"
}
}
然后您应该可以访问 Android 14 的新 API,可以通过获取代理并根据连接的设备设置配置来使用它:
context.getSystemService(BluetoothManager::class.java)
.adapter
.getProfileProxy(
context,
object : BluetoothProfile.ServiceListener {
override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) {
(proxy as BluetoothA2dp).setCodecConfigPreference(
bluetoothDevice,
BluetoothCodecConfig.Builder()
.setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC)
.build()
)
}
override fun onServiceDisconnected(profile: Int) {}
},
BluetoothProfile.A2DP
)
不允许直接更改 API 33 中的编解码器 因为 setCodecConfigPreference 不是公共 API
为此,我推荐此演示,在此演示中提供简单的代码来更改蓝牙编解码器
https://github.com/matisiekpl/bluetooth-codec-change?tab=readme-ov-file
当你打开这个演示时,在 android studio 中找不到一些代码,例如未解析的参考,但不用担心
为此,请在您的 android SDK 文件夹中打开平台文件夹并按照以下步骤进行操作
如果有任何疑问请告诉我
谢谢你。