Остановить вибрацию системы при получении вызова в Android - PullRequest
0 голосов
/ 25 августа 2011

я создал BroadcastReceiver, который прослушивает изменения в PHONE_STATE.в методе 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 голос
/ 02 января 2014

Остановка вибрации, запущенной другим процессом, теперь не разрешена в Android, и, таким образом, этот хак может остановить вибрацию или даст вам ощущение, что она остановила вибрацию.

long timea = System.currentTimeMillis (); Vibrator v = (Вибратор) getSystemService (Context.VIBRATOR_SERVICE);

while ((System.currentTimeMillis () - timea) <15000) { v.vibrate (1); пытаться { Thread.sleep (10); } catch (InterruptedException e) {} } </p>

0 голосов
/ 25 августа 2011

Попробуйте: (заимствовано и изменено из Android Source)

AudioManager am = Context.getSystemService(Context.AUDIO_SERVICE);
boolean vibeInSilent = false;
int callsVibrateSetting = AudioManager.VIBRATE_SETTING_OFF;

Settings.System.putInt(getContentResolver(), 
        Settings.System.VIBRATE_IN_SILENT,
        vibeInSilent ? 1 : 0);

//mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
//or (not sure which one will work)
//mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
        callsVibrateSetting);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...