[英]Android 10 , WakeUP
在這里找到了一個支持消息傳遞的應用程序。 雖然我可以在后台下載消息,但如果屏幕關閉,振動將不起作用。
所以我嘗試了這個:
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。
即使屏幕關閉我也想振動,這可能嗎?
謝謝你。
我是這樣解決的:
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.