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,正常了。观察手机,确实不会自动熄屏,锁屏了。搞定!