0

ICS 和 JB 有一个操作系统设置:“振动环”。我尝试了下一个代码尝试获取状态,但值不一样。我可以使用广播或其他方法吗?

    AudioManager audioManager = (AudioManager) this.getApplicationContext()
            .getSystemService(Context.AUDIO_SERVICE);
    boolean bVibrateRing = audioManager
            .shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER);

在 ICS 声音模式下,当检查“振动环”时,它会是真的。但在 JB 中,这将是错误的。

我试过这样广播:

    receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Bundle extras = intent.getExtras();
            if (extras != null) {
                int nstate = extras
                        .getInt(AudioManager.EXTRA_RINGER_MODE);
                Log.d("receiver", " receiver EXTRA_RINGER_MODE :  "
                        + nstate);
            }
        }
    };
    IntentFilter filter = new IntentFilter(
            AudioManager.RINGER_MODE_CHANGED_ACTION);
    registerReceiver(receiver, filter);

我只能获得下一个模式更改:

RINGER_MODE_NORMAL
RINGER_MODE_SILENT
RINGER_MODE_VIBRATE

没有关于“振动环”的信息。

感谢您的任何提示和时间。

4

1 回答 1

3

下一个代码可以检查状态:

Settings.System.getInt(this.getApplicationContext().getContentResolver(),
                       "vibrate_when_ringing", 0);
于 2012-08-31T08:09:24.990 回答