1
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* 类型,但是我似乎找不到在状态发生变化时捕获的 EventListener。我正在编写的应用程序在后台运行,所以我想知道检查 AudioManager.RINGER_MODE 状态的最及时方式。

4

2 回答 2

3

您需要在您的代码中注册一个BroadcastReceiver来监听RINGER_MODE_CHANGED_ACTION意图。这会让你知道状态已经改变。收到意图后,您可以调用 getRingerMode() 来了解当前状态。

于 2011-09-19T16:58:02.163 回答
0

你试过听 AudioManager.RINGER_MODE_CHANGED_ACTION 吗?

于 2011-09-19T16:50:14.693 回答