Android 收听服务中蓝牙耳机的音量变化 在检查此副本之前,请阅读我尝试的内容
问题在于,该代码适用于设备音量按钮或有线耳机,但不适用于蓝牙耳机。我做了研究,没有找到适合我的解决方案 注:如果我可以捕捉暂停播放按钮而不是音量按钮,那么它也可以为我提供解决方案 选项1:(蓝牙耳机除外) 选项2:(蓝牙耳机除外) 选项3:(完全不工作) 选项4:(蓝牙耳机除外)Android 收听服务中蓝牙耳机的音量变化 在检查此副本之前,请阅读我尝试的内容,android,kotlin,bluetooth,Android,Kotlin,Bluetooth,问题在于,该代码适用于设备音量按钮或有线耳机,但不适用于蓝牙耳机。我做了研究,没有找到适合我的解决方案 注:如果我可以捕捉暂停播放按钮而不是音量按钮,那么它也可以为我提供解决方案 选项1:(蓝牙耳机除外) 选项2:(蓝牙耳机除外) 选项3:(完全不工作) 选项4:(蓝牙耳机除外) val vReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context:
val vReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
//handle receiving volume events
}
}
registerReceiver(vReceiver, IntentFilter("android.media.VOLUME_CHANGED_ACTION"))
class SettingsContentObserver(context: Context, handler: Handler?) :
ContentObserver(handler) {
private val audioManager: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
override fun deliverSelfNotifications(): Boolean {
return false
}
override fun onChange(selfChange: Boolean) {
//handle receiving volume events
}
}
applicationContext.contentResolver.registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, SettingsContentObserver(this, Handler()));
mediaSessionCompat = MediaSessionCompat(this, TAG)
mediaSessionCompat?.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS or MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS)
mediaSessionCompat?.setCallback(object: MediaSessionCompat.Callback(){
override fun onMediaButtonEvent(mediaButtonEvent: Intent?): Boolean {
//handle receiving volume events
return false
}....
mediaSessionCompat?.isActive = true
mediaSessionCompat = MediaSessionCompat(this, TAG)
mediaSessionCompat?.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS or MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS)
val myVolumeProvider: VolumeProviderCompat = object : VolumeProviderCompat(VOLUME_CONTROL_ABSOLUTE, 100, 100) {
override fun onAdjustVolume(direction: Int) {
//handle receiving volume events
}
mediaSessionCompat?.isActive = true
mediaSessionCompat?.setPlaybackToRemote(myVolumeProvider)