3

在我的应用程序中,我通过以下代码启动 VIBRATOR_SERVICE

long[] pattern = {50,100,1000}
Vibrator vibe=(Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(pattern, 0);

我希望振动一直持续到我打电话

vibe.cancel();

该代码工作正常,但屏幕进入睡眠模式时振动消失。

即使屏幕进入睡眠模式,我也希望振动继续。有没有办法做到这一点?请帮我。

提前致谢。:)

4

2 回答 2

4

问题的正确答案如下

在此之前,不要忘记将权限“ android.permission.VIBRATE”添加到您的应用清单文件中。

public BroadcastReceiver vibrateReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            vibe.vibrate(pattern, 0);
        }
    }
};

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(vibrateReceiver, filter);

唤醒锁在这里不起作用,因为接收器只有在屏幕熄灭后才会收到意图。虽然我们可以在屏幕进入关闭模式后获得唤醒锁,但振动停止,因为它发生在ACTION_SCREEN_OFF. 所以可以通过接收到广播后再次启动振动来完成。

于 2013-01-29T05:45:26.417 回答
1

试试这个可能对你有帮助。首先要做到broadcast receiver这一点,当手机灯屏幕关闭时,然后编写振动手机的逻辑。

 public BroadcastReceiver wakeLockReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent)
    {
        if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            //WRITE LOGIC OF VIBRATION.
        }
    }
};

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(wakeLockReceiver, filter);

在 AndroidManifest.xml 中添加权限

<uses-permission android:name="android.permission.VIBRATE"/>
于 2013-01-28T12:04:44.233 回答