3

所以我试图模拟手机正在接听电话。我已成功提取手机铃声并播放。现在我想模拟振动。虽然我可以让手机振动,但我想模拟手机在接到电话时振动的确切模式。是否有一些设置或类可用于提取此模式,并检测是否打开了振动?

4

3 回答 3

4

你必须以某种方式振动它。

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/

我不确定使用什么模式作为标准,您可能可以在源代码中找到它,或者自己继续尝试不同的模式,直到满意为止。

于 2010-02-19T16:44:54.983 回答
0

似乎没有任何课程可以为您提供来电的“标准”振动设置。由于大多数手机都带有定制的供应商呼叫者应用程序,并且由于 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;
    }
}

这取决于您可以在标准手机设置中找到的“振铃时振动”和“声音模式”设置。

于 2019-01-09T11:01:46.797 回答
-1

为什么不使用 Android 源代码来看看他们是如何做到的?

电话应用程序源可从
https://android.googlesource.com/platform/packages/apps/Phone

于 2010-02-19T11:24:30.880 回答