在我的应用程序中,我通过以下代码
启动VIBRATOR_SERVICElong[] pattern = {50,100,1000}
Vibrator vibe=(Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(pattern, 0);
我希望振动继续,直到我打电话
vibe.cancel();
“守则”工作正常,但当屏幕进入睡眠模式时,振动会消失。
即使屏幕进入睡眠模式,我仍希望振动继续。有没有办法做到这一点?请帮帮我。
提前致谢。 :)
答案 0 :(得分: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);
wakelock 在这里不起作用,因为接收器只有在屏幕熄灭后才会收到意图。虽然我们可以在屏幕进入关闭模式后获取唤醒锁,但振动会停止,因为它发生在ACTION_SCREEN_OFF
。所以可以通过在接收广播后再次启动振动来完成。
答案 1 :(得分: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"/>