我在这里找到了一个支持消息传递的应用。虽然我可以在后台下载消息,但如果屏幕关闭,振动就不会工作。
所以我试了一下:
procedure TMain.doVibration(milisec: Integer);
var Vibrator : JVibrator;
PowerManager : JPowerManager;
begin
PowerManager := TJPowerManager.Wrap(TAndroidHelper.Context.getSystemService(TJContext.JavaClass.POWER_SERVICE));
if PowerManager.isInteractive = false then PowerManager.wakeUp(1000);
Vibrator := TJVibrator.Wrap((SharedActivityContext.getSystemService(TJContext.JavaClass.VIBRATOR_SERVICE) as ILocalObject).GetObjectID);
Vibrator.vibrate(milisec);
end;不幸的是,这并不起作用,大多数时候它只是锁定了我的应用程序。有时我会收到权限错误。在Delphi中,我将WAKE_LOCK的权限设置为true。
我只是想在屏幕关闭的情况下振动,这可能吗?
谢谢。
发布于 2021-03-03 18:05:24
我是这样解决的:
procedure TMain.MessageVibrate;
var
Vibrator : JVibrator;
PowerManager : JPowerManager;
WakeLock : JPowerManager_WakeLock;
begin
PowerManager := TJPowerManager.Wrap(TAndroidHelper.Context.getSystemService(TJContext.JavaClass.POWER_SERVICE));
WakeLock := PowerManager.newWakeLock(TJPowerManager.JavaClass.FULL_WAKE_LOCK or TJPowerManager.JavaClass.ACQUIRE_CAUSES_WAKEUP,StringToJString('NE_PACK'));
WakeLock.acquire;
sleep(500); // if the device is in deep sleep, sometimes it does not vibrate if I do not wait
Vibrator := TJVibrator.Wrap((SharedActivityContext.getSystemService(TJContext.JavaClass.VIBRATOR_SERVICE) as ILocalObject).GetObjectID);
Vibrator.vibrate(500);
WakeLock.release;
WakeLock:=nil;
end;https://stackoverflow.com/questions/66435965
复制相似问题