14
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 并在广播接收器的 onReceive 方法中监听更改意图。听起来很清楚。但我是android新手,真的不知道怎么写。有没有人可以只写一段代码并展示它是如何工作的,而不是说使用这个或那个:) 谢谢

4

3 回答 3

21

onCreate()在您ActivityService您要处理广播的方法中使用以下代码:

      BroadcastReceiver receiver=new BroadcastReceiver(){
          @Override
          public void onReceive(Context context, Intent intent) {
               //code...
          }
      };
      IntentFilter filter=new IntentFilter(
                      AudioManager.RINGER_MODE_CHANGED_ACTION);
      registerReceiver(receiver,filter);
于 2011-09-20T10:59:18.430 回答
13

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

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

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

于 2012-03-01T18:07:22.727 回答
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))
于 2018-03-20T07:26:33.910 回答