某种棘手的问题。我正在使用一个应用程序,通过该应用程序,用户可以为不同的联系人设置来电自定义铃声和不同的振动级别。
我一直坚持振动水平设定。我们可以使用
设置振动水平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);
这就是振动我的手机。但我想设置来电的振动水平。用户可以根据不同的预定义振动设置进行设置。
使用此代码我可以设置Vibration ON - OFF。但不知道如何设定振动水平。
String VIBRATE_IN_SILENT_SETTING_NAME = "vibrate_in_silent";
Settings.System.putInt(getContentResolver(), VIBRATE_IN_SILENT_SETTING_NAME, 1);
我希望有人可以就这个问题提出一些建议。欢迎提出建议。
答案 0 :(得分:0)
Android Vibrate API只有时间控制。该API没有数量控制。
有关详情,请参阅this
http://developer.android.com/reference/android/os/Vibrator.html
答案 1 :(得分:0)
如果你想降低振动,你需要在中间创建一个带空白空间的模式。
使用如下的常量:
int dot = 200;
int short_gap = 200; // Length of Gap
然后定义数组和模式:
long[] pattern = {
0, // Start immediately
dot, short_gap };
然后你可以打电话:
v.vibrate(pattern, x);
// x value:
// 0 repeat infinite
// -1 no repeat
// n number of repetitions
通过改变点和间隙的长度(或定义新的点以执行各种模式),您可以调制振动的力量。
EDIT1:这是我的VibrationConstants.java
public class VibrationConstants {
private static int p = 5; // five millisecond of vibration
private static int s = 5; // five millisecond of break - could be more to
// weaken
// the vibration
private static int pp = 10; // ten millisecond of vibration
private static int ss = 10; // ten millisecond of break - could be more to
// weaken
// the vibration
private static int ppp = 50; // fifty millisecond of vibration
private static int sss = 50; // fifty millisecond of break - could be more to
// weaken
// the vibration
public static long[] HARD_VIBRATION = { 0, ppp, sss };
public static long[] MIDDLE_VIBRATION = { 0, pp, ss };
public static long[] SOFT_VIBRATION_2 = { 0, p, s };
public static long[] PATTERN_VIBRATION = { 0, 250, 200, 250, 150, 150, 75,
150, 75, 150 };
}
所以,当你想打电话时:
v.vibrate(VibrationConstants.SOFT_VIBRATION_2, x);
// x value:
// 0 repeat infinite
// -1 no repeat
// n number of repetitions
如果振动和休息中具有相同值的结果不符合您的预期,请尝试仅更改中断值。这样做效果很好。 :)强>
希望有所帮助,我试图从谷歌三星或Xperia这样的手机品牌中找到模式,但我找不到它......所以我们用模拟的模式得到了很好的结果,但都取决于你的要求。
我相信你必须做一些测试来达到你的目标,但不是那么难。