简体   繁体   English

如何以编程方式检测 android 手机是否处于静音模式

[英]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 .使用AudioManagergetRingerMode()方法

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.

相关问题 如何以编程方式检测 Android 设备是否处于暗模式? - How can I detect programmatically if the Android Device is in Dark Mode? 如何在代码中检测手机是否处于睡眠模式? - How to detect whether the phone is in sleep mode in the code? 如何检测Android出现静默故障的原因? - How can I detect the cause of silent failures on Android? 如何检测手机是否连接到android auto - How to detect whether the phone connected to android auto Android,即使静音时手机播放通知也会响起? 我应该检查静音模式吗? - Android, Phone playing notification sounds even when on silent? Should I be checking for silent mode? 如何检测Android手机的铃声并以编程方式振动? - How to detect android phone ring and vibrate programmatically? 如何在Android中以编程方式将手机置于飞行模式? - How to put a phone in Airplane mode programmatically in Android? 是否可以在android中以编程方式关闭静音模式? - Is it possible to turn off the silent mode programmatically in android? 如何以编程方式检测android中的口袋模式 - How to detect pocket mode in android programmatically 如何在不打开设置意图的情况下更改Android 7.0中的音频模式(静音,正常)? - How can I change the Audio Mode (Silent, Normal) in Android 7.0 without Opening Setting Intent?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM