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

Posted

技术标签:

【中文标题】如何以编程方式检测 android 手机是不是处于静音模式【英文标题】:how can I detect whether the android phone in Silent mode programmatically如何以编程方式检测 android 手机是否处于静音模式 【发布时间】:2010-01-12 11:13:40 【问题描述】:

如何判断手机是否处于静音模式?

我使用的是 android 1.5。我尝试使用“android.provider.Settings.ACTION_SOUND_SETTINGS”。它不工作。

【问题讨论】:

【参考方案1】:

使用getRingerMode() method in AudioManager

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;

【讨论】:

嗨,戴夫,有没有办法以编程方式切换静音和振动模式。 setRingerMode() in AudioManager 允许您更改铃声模式。 嗨,戴夫,我可以使用 am.setRingerMode(AudioManager.RINGER_MODE_SILENT); 处理静音模式;但使用 AudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF) 处理振动模式;没有任何线索 您到底想做什么?我不认为setVibrateSettings() 做你认为它做的事。【参考方案2】:

以下代码检查手机是否未处于静音模式,然后播放哔声,写为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()

【讨论】:

以上是关于如何以编程方式检测 android 手机是不是处于静音模式的主要内容,如果未能解决你的问题,请参考以下文章

您能否以编程方式检查以确定您的 android 设备是不是处于深度睡眠模式?

Android:以编程方式检测设备是不是有硬件菜单按钮

让 Android 进入睡眠状态以进行测试

在android上检测USB网络共享

如何以编程方式找出联系人是不是可在android中编辑

以编程方式获取 Android 手机型号,如何在 android 中以编程方式获取设备名称和型号?