Delphi 12 写的安卓APP如何禁掉安卓锁屏

delphi 关闭 安卓 手机屏保

在Delphi中关闭安卓手机的屏保,可以通过调用Android的API来实现。以下是一个简单的示例代码,展示了如何在Delphi应用程序中执行此操作:

 
 

uses

Androidapi.JNI.GraphicsContentViews,

Androidapi.Helpers;

procedure StopScreenSaver;

var

pm: JPowerManager;

c: JContext;

begin

c := TAndroidHelper.Context;

pm := TJPowerManager.Wrap((c.getSystemService(TJContext.JavaClass.POWER_SERVICE) as ILocalObject).GetObjectID);

pm.userActivity(TJSystemClock.JavaClass.uptimeMillis, False); // 第二个参数表示不触发屏保

end;

在这个例子中,我们首先获取了PowerManager服务,然后调用userActivity方法,并将其中的第二个参数设置为False,这样就不会触发屏保。TJSystemClock.JavaClass.uptimeMillis用于获取自开机以来的毫秒数,这个时间戳会被记录,以帮助系统追踪用户的活动状态。

请注意,这段代码需要在安卓平台上运行,并且可能需要相应的权限,你可能需要在AndroidManifest.xml中添加以下权限:

 
 

<uses-permission android:name="android.permission.WAKE_LOCK" />

在实际的应用中,你可能还需要检查API版本和设备的兼容性,因为不同的设备可能会有不同的行为。

提示:AI自动生成,仅供参考


我要写一个 APP 是播放视频的。播放视频的时候,手机过一会自动锁屏。这个是手机本身的设置。如何在我的程序中禁止掉这个?

经过搜索,安卓下有办法了。请见:安卓下如何用 WakeLock

上述 StackOverflow 问题解答里面,给出了一个单元:Android.JNI.PowerManager.pas,我搜了一下 Delphi 提供的源代码,一堆 Android.JNI.xx 但没有这个文件。

我自己写了个测试程序,把这个单元放进去,然后在程序里增加一个按钮,代码:

procedure TForm2.Button1Click(Sender: TObject);
begin
  if AcquireWakeLock then ShowMessage('True');
end;
编译发布到手机,点按钮,出异常。提示是权限问题。在 Delphi IDE 里面,打开工程的 Option 找到左边的 User Permissions 一栏,在右边找到 Wake lock 一项,改设置为 True。重新编译。

在手机里点这个按钮,显示 True,正常了。观察手机,确实不会自动熄屏,锁屏了。搞定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tjsoft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值