Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AudioManager振铃器模式与手机不匹配';s值 TL;DR:AudioManager.getRingerMode()似乎错误很多。这个API是有缺陷的,还是过时的,还是我做错了什么?_Android_Android Audiomanager_Android 8.0 Oreo_Vibration - Fatal编程技术网

Android AudioManager振铃器模式与手机不匹配';s值 TL;DR:AudioManager.getRingerMode()似乎错误很多。这个API是有缺陷的,还是过时的,还是我做错了什么?

Android AudioManager振铃器模式与手机不匹配';s值 TL;DR:AudioManager.getRingerMode()似乎错误很多。这个API是有缺陷的,还是过时的,还是我做错了什么?,android,android-audiomanager,android-8.0-oreo,vibration,Android,Android Audiomanager,Android 8.0 Oreo,Vibration,问题: AudioManager.getRingerMode()值不一致且与文档不匹配 AudioManager在振动模式下报告振铃器静音 广播侦听器跳过步骤,从0-2转到1,而不转到1 振铃器模式\u正常振铃器模式,可听到声音并可振动。如果在此模式下切换前音量可听见,则会发出声音。如果振动设置打开,它将振动 振铃器模式\u静音-静音且不会振动的振铃器模式。(这将覆盖振动设置。) 振铃器模式\u振动-将静音并振动的振铃器模式。(这将导致电话振铃器始终振动,但通知仅在设置时振动。) 然

问题:

  • AudioManager.getRingerMode()
    值不一致且与文档不匹配
  • AudioManager在振动模式下报告振铃器静音
  • 广播侦听器跳过步骤,从0-2转到1,而不转到1

  • 振铃器模式\u正常振铃器模式,可听到声音并可振动。如果在此模式下切换前音量可听见,则会发出声音。如果振动设置打开,它将振动

  • 振铃器模式\u静音-静音且不会振动的振铃器模式。(这将覆盖振动设置。)

  • 振铃器模式\u振动-将静音并振动的振铃器模式。(这将导致电话振铃器始终振动,但通知仅在设置时振动。)


然而,这里有一段视频显示,当设备处于振动模式时,它会报告0,并从0跳到2,而不会跳到1


源代码
我也有同样的问题。您是在模拟器上还是在真实设备上获得此结果?安装了什么Android版本?当手机铃声模式设置为静音或静音时,它在Android 6上提供的输出是振铃模式,而不是振铃模式。同样的方法在Android 9和10上运行良好,但在Android 6上则不行,
class MainActivity : AppCompatActivity() {

    val volumeChangeReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent?) {
            val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
            val ringerMode = audioManager.ringerMode

            textView.text = (textView.text?.toString() ?: "") + when (ringerMode) {
                AudioManager.RINGER_MODE_SILENT -> "$ringerMode: RINGER_MODE_SILENT\n"
                AudioManager.RINGER_MODE_VIBRATE -> "$ringerMode: RINGER_MODE_VIBRATE\n"
                AudioManager.RINGER_MODE_NORMAL -> "$ringerMode: RINGER_MODE_NORMAL\n"
                else -> ""
            }
        }

    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onResume() {
        super.onResume()

        val intentFilter = IntentFilter()
        intentFilter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION)
        registerReceiver(volumeChangeReceiver, intentFilter)
    }

    override fun onPause() {
        super.onPause()
        unregisterReceiver(volumeChangeReceiver)
    }
}