2

アプリケーションがデバイスのサウンド設定を尊重するように、バイブレーターの適切な設定を取得する必要があります。次のコードでは、バイブレーターがオフの場合(私の電話で音量を下げると、ボリュームがオフでバイブレーターがオフの状態であり、ボリュームがオフのときにバイブレーターがオンの状態です)。電話が振動しないように設定されている場合 (このデバイスに電話をかけることによって確認されます)、バイブレーターがオンになっていると見なされます。

AudioManager audioManager = (AudioManager) PingerApplication.getInstance().getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
int vibrationSetting = audioManager.getVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION);
boolean vibrate;
switch(vibrationSetting) {
case AudioManager.VIBRATE_SETTING_ON:
    vibrate = true;
    break;
case AudioManager.VIBRATE_SETTING_OFF:
    vibrate = false;
    break;
case AudioManager.VIBRATE_SETTING_ONLY_SILENT:
    vibrate = (audioManager.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE);
    break;
default:
    vibrate = false;
}

私は何か間違ったことをしていますか?バイブレーション設定は常にAudioManager.VIBRATE_SETTING_ON

4

2 に答える 2

2

AudioManager.getRingerMode() をチェックすることもできます。

 AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
    if(audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT)
    {
        // should not vibrate
    }
于 2012-12-24T09:58:34.403 に答える
0

Javadoc によると、AudioManager.shouldVibrate(int)代わりに使用する必要があります。

于 2011-09-27T14:35:48.487 に答える