AudioManager.getRingerMode()
似乎错了很多。这个API是错误的还是过时的,还是我做错了什么?的问题:
AudioManager.getRingerMode()
值不一致且与文档不匹配。RINGER_MODE_NORMAL - 铃声模式可能会听到并可能会振动。如果可以听到更改此模式之前的音量,则会听到声音。如果振动设置打开,它将振动。
RINGER_MODE_SILENT - 振铃模式将保持静音且不会振动。 (这会覆盖振动设置。)
RINGER_MODE_VIBRATE - 振铃模式,它将保持静音并振动。 (这将导致手机振铃器始终振动,但通知振动只会振动,如果设置。)
但是,这是一个视频,显示当设备处于振动模式时报告0并从0跳到2而不转到1。
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)
}
}