Android 收听服务中蓝牙耳机的音量变化 在检查此副本之前,请阅读我尝试的内容

Android 收听服务中蓝牙耳机的音量变化 在检查此副本之前,请阅读我尝试的内容,android,kotlin,bluetooth,Android,Kotlin,Bluetooth,问题在于,该代码适用于设备音量按钮或有线耳机,但不适用于蓝牙耳机。我做了研究,没有找到适合我的解决方案 注:如果我可以捕捉暂停播放按钮而不是音量按钮,那么它也可以为我提供解决方案 选项1:(蓝牙耳机除外) 选项2:(蓝牙耳机除外) 选项3:(完全不工作) 选项4:(蓝牙耳机除外) val vReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context:

问题在于,该代码适用于设备音量按钮或有线耳机,但不适用于蓝牙耳机。我做了研究,没有找到适合我的解决方案

注:如果我可以捕捉暂停播放按钮而不是音量按钮,那么它也可以为我提供解决方案

选项1:(蓝牙耳机除外)

选项2:(蓝牙耳机除外)

选项3:(完全不工作)

选项4:(蓝牙耳机除外)

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)