我使用"vibrator.vibrate(2000);“来表示振动,它会振动,但强度非常软。我知道我的手机可以振动得更强,因为当收到电话或通知时,它会正确振动。为什么vibrate()函数这么弱?谢谢
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(4000); 然而,当收到短信或通知时,手机的振动会非常强烈
发布于 2012-12-10 10:46:48
您不能进一步增加振动强度。因此,为了获得更好的感觉,您可以使用public void vibrate(long[] pattern, int repeat)代替vibrator.vibrate(2000);
这里的模式是(来自api参考)
传入一个in数组,该数组是以毫秒为单位打开或关闭可控震源的持续时间。第一个值表示在打开可控震源之前等待的毫秒数。下一个值表示在关闭可控震源之前保持可控震源打开的毫秒数。随后的值以毫秒为单位在持续时间之间交替,以关闭可控震源或打开可控震源。
所以你可以尝试不同的模式来获得更好的感觉。例如
final long[] pattern = { 0, 200, 500, 500, 200 };
vibrator.vibrate(pattern , 0);您可以创建自己的模式进行检查。
发布于 2012-12-10 19:20:48
在大多数手机中,振动是由一个微型振动马达引起的(相当粗略),这个马达在轴上有一个偏重。这样,当马达被激活,轴旋转时,偏置重量会使马达以及它所连接的任何东西振动。除了对电机供电的持续时间外,没有其他控制。

虽然这似乎不能解释为什么呼叫接收或通知会产生比您通过API函数获得的振动更强的振动。那么,也许我应该把这句话当做评论而不是答案呢?(但我不知道如何在评论中获得图片)
发布于 2012-12-10 08:10:51
这是一个有根据的猜测,因为我从未使用过可控震源,但也许可以尝试增加传递给函数的值?
https://stackoverflow.com/questions/13793179
复制相似问题