振铃模式改变监听器广播接收器?

时间:2011-09-20 10:50:10

标签: android broadcastreceiver android-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;
}

从上面的代码我可以获得振铃模式。我要做的就是听铃声模式改变并调用一个函数。

我被告知的是我可以注册AudioManager。 RINGER_MODE_CHANGED_ACTION并在broadcastreceiver onReceive方法中监听更改意图。听起来很清楚。但我是android的新手,真的不知道如何写它。有没有人可以写一段代码并显示它是如何工作的而不是说使用这个或那个:)谢谢

3 个答案:

答案 0 :(得分:17)

在您要处理广播的onCreate()Activity的{​​{1}}方法中使用以下代码:

Service

答案 1 :(得分:13)

另一个解决方案是在Manifest中添加一个带有动作的接收器:

<receiver android:name=".receivers.RingerModeStateChangeReceiver" >
    <intent-filter>
        <action android:name="android.media.RINGER_MODE_CHANGED" />
    </intent-filter>
</receiver>

并且您的类RingerModeStateChangeReceiver应该扩展BroadcastReceiver。

答案 2 :(得分:0)

这是Kotlin的更新版本。将其放在onCreate()生命周期下。

this.activity?.registerReceiver(object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            if (intent.action == AudioManager.RINGER_MODE_CHANGED_ACTION) {
                // Set Player Volume
            }
        }
    }, IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION))