Как определить программный телефон андроида в беззвучном режиме?
Как определить, находится ли телефон в беззвучном режиме или нет?
Я использую Android 1.5. Я попытался с помощью "android.provider.Settings.ACTION_SOUND_SETTINGS". Это не работает.
3 ответа
Решение
Использовать getRingerMode()
метод в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;
}
Следующий код проверяет, не находится ли телефон в беззвучном режиме, затем воспроизводит звуковой сигнал, записанный на
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()
Если вы хотите прослушивать изменения режима звонка, означающие любые изменения в режимах « Без звука» , «Вибрация » или « Нормальный », вы можете настроить широковещательный приемник в своей деятельности, как показано ниже.
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)
}
и отмените регистрацию, когда действие будет уничтожено, как показано ниже.
override fun onDestroy() {
super.onDestroy()
unregisterReceiver(volumeKeyReceiver)
}
и зарегистрируйте получателя в манифесте
<receiver android:name=".VolumeKeyReceiver"/>
здесь идет широковещательный приемник
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"
)
}
}
}