Имитация вибрации как при приеме звонка - PullRequest
1 голос
/ 19 февраля 2010

Итак, я пытаюсь смоделировать, что телефон получает вызов. Я успешно извлек мелодию звонка телефона и сыграл ее. Теперь я хочу смоделировать вибрацию. Хотя я могу заставить телефон вибрировать, я хочу имитировать точную схему, с которой телефон вибрирует, как при получении вызова. Есть ли какие-то настройки или классы, которые я могу использовать, чтобы извлечь этот паттерн, а также определить, включена ли вибрация?

Ответы [ 3 ]

4 голосов
/ 19 февраля 2010

Вы должны вибрировать это в шаблоне.

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);  

// 1. Vibrate for 1000 milliseconds  
long milliseconds = 1000;  
v.vibrate(milliseconds);  

// 2. Vibrate in a Pattern with 500ms on, 500ms off for 5 times  
long[] pattern = { 500, 300 };  
v.vibrate(pattern, 5);

http://www.androidsnippets.org/snippets/22/

Я не уверен, какой шаблон используется в качестве стандартного, вы, вероятно, могли бы найти его в источнике, или продолжайте пробовать разные шаблоны самостоятельно, пока он не будет удовлетворительным.

0 голосов
/ 09 января 2019

Кажется, что нет класса, который мог бы предоставить вам стандартные настройки вибрации для входящего вызова.Поскольку большинство телефонов поставляются с пользовательскими приложениями вызывающего абонента и поскольку в Google Play имеется множество пользовательских приложений вызывающего абонента, этого «стандартного» шаблона, вероятно, даже не существует.

Стандартное приложение вызывающего абонента из AOSP использует этот шаблон:

private static final int VIBRATE_LENGTH = 1000; // ms
private static final int PAUSE_LENGTH = 1000; // ms

И чтобы определить, включена ли вибрация:

boolean shouldVibrate() {
    AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
    int ringerMode = audioManager.getRingerMode();
    if (Settings.System.getInt(mContext.getContentResolver(), "vibrate_when_ringing", 0) > 0) {
        return ringerMode != AudioManager.RINGER_MODE_SILENT;
    } else {
        return ringerMode == AudioManager.RINGER_MODE_VIBRATE;
    }
}

Это зависит от настроек «Вибрация при звонке» и «Режим звука», которые вы можете найти в стандартных настройках телефона..

0 голосов
/ 19 февраля 2010

Почему бы не использовать источник Android, чтобы увидеть, как они это делают?

Источник приложения для телефона доступен с
https://android.googlesource.com/platform/packages/apps/Phone

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...