[英]how can I detect whether the android phone in Silent mode programmatically
How to identify whether the phone is in Silent mode or not?如何判断手机是否处于静音模式?
I am using Android 1.5.我正在使用 Android 1.5。 I tried by using "android.provider.Settings.ACTION_SOUND_SETTINGS".
我尝试使用“android.provider.Settings.ACTION_SOUND_SETTINGS”。 It is not working.
它不工作。
Use the getRingerMode()
method in AudioManager
.使用
AudioManager
的getRingerMode()
方法。
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
switch (am.getRingerMode()) {
case AudioManager.RINGER_MODE_SILENT:
Log.i("MyApp","Silent mode");
break;
case AudioManager.RINGER_MODE_VIBRATE:
Log.i("MyApp","Vibrate mode");
break;
case AudioManager.RINGER_MODE_NORMAL:
Log.i("MyApp","Normal mode");
break;
}
Following code checks if phone is not in silent mode then plays a beep, written in kotlin
:以下代码检查手机是否未处于静音模式,然后播放用
kotlin
编写的哔声:
val manager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
manager.setStreamVolume(AudioManager.STREAM_MUSIC, 10, 0)
val notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
val player: MediaPlayer = MediaPlayer.create(applicationContext, notification)
if(manager.ringerMode != AudioManager.RINGER_MODE_SILENT)
player.start()
If you want to listen for ringer mode changes means any change in Silent or Vibrate or Normal you can set up a broadcast receiver in your activity like below.如果您想收听铃声模式的变化意味着静音或振动或正常的任何变化,您可以在您的活动中设置一个广播接收器,如下所示。
private val volumeKeyReceiver: VolumeKeyReceiver by lazy {
VolumeKeyReceiver()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
registerBroadcastListener()
}
private fun registerBroadcastListener() {
val intentFilter = IntentFilter()
intentFilter.addAction("android.media.RINGER_MODE_CHANGED")
registerReceiver(volumeKeyReceiver, intentFilter)
}
and unregister when the activity is destroyed like below.并在活动被销毁时取消注册,如下所示。
override fun onDestroy() {
super.onDestroy()
unregisterReceiver(volumeKeyReceiver)
}
and register the receiver in manifest并在清单中注册接收者
<receiver android:name=".VolumeKeyReceiver"/>
here goes the broadcast receiver这是广播接收器
class VolumeKeyReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
//Implement Logic
val audioManager =
context?.getSystemService(Context.AUDIO_SERVICE) as android.media.AudioManager
when (audioManager.ringerMode) {
android.media.AudioManager.RINGER_MODE_SILENT -> Log.d(
"VolumeKeyReceiver",
"Silent mode"
)
android.media.AudioManager.RINGER_MODE_VIBRATE -> Log.d(
"VolumeKeyReceiver",
"Vibrate mode"
)
android.media.AudioManager.RINGER_MODE_NORMAL -> Log.d(
"VolumeKeyReceiver",
"Normal mode"
)
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.