나는 PHONE_STATE에서 변경 사항을 듣고있는 BroadcastReceiver를 만들었습니다. onReceive 메서드에서 시스템 바이브레이터를 끄고 싶습니다. 나는 다른 접근법을 시도했지만 그들 중 아직까지는 효과가 없었다.안드로이드 전화 수신시 시스템 진동 중지
AudioManager audioManager = (AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE);
systemVibration = audioManager.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER);
audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
또는
Vibrator vib = (Vibrator)ctx.getSystemService(Context.VIBRATOR_SERVICE);
vib.cancel();
또는
System.putInt(ctx.getContentResolver(), System.VIBRATE_ON, 0);
또는 모두 함께.
AudioManager의 첫 번째 접근 방식은 실제로 진동에 대한 시스템 설정을 변경하지만 현재 진행중인 시스템 설정에는 영향을 미치지 않습니다.
어떤 아이디어가 있습니까?
사이먼
이전에 코드를 잘랐습니다. 여기에 2 가지 문제가 있습니다. 1. 전화가 자동 모드가 아니며 2. Settings.System.VIBRATE_IN_SILENT 값을 찾을 수 없습니다. 안드로이드의 어떤 버전이되어야 하는가? 버전 2.1 (7) – SimonSays
Settings.System.VIBRATE_IN_SILENT 2.1 사용하고 있습니다. 그것은 단지 문서에 숨겨져 있습니다. 상수가 작동하지 않습니까? 자동 모드가 아닌데도이 두 줄 중 하나의 주석을 제거해야합니다. –
VIBRATE_IN_SILENT를 확인할 수 없으며 향후 릴리스에서 제거 될 가능성이 큰 문서입니다. 방금 대신 문자열 값 "vibrate_in_silent"를 사용했습니다. 이것은 실제로 작동하지만, 사실상 내 의도가 아닌 자동 모드로 전화를 전환합니다. 링거 모드는 손대지 않아야하며 진동 만 차단해야합니다. – SimonSays