delphiXE7关于android 检测屏幕是否处于关闭状态

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Layouts, FMX.Memo;

type
  TForm1 = class(TForm)
    Button1: TButton;
    mmo1: TMemo;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

uses Androidapi.JNI.android.os.PowerManager,
     Androidapi.JNI.GraphicsContentViewText,
     Androidapi.JNI.JavaTypes,
     Androidapi.Helpers,
     Androidapi.JNIBridge;
{$R *.NmXhdpiPh.fmx ANDROID}

function GetPowerManager:JPowerManager ;
var
 Native:JObject ;
begin
 Native:=SharedActivityContext.getSystemService(TJContext.JavaClass.POWER_SERVICE);
 if not Assigned(Native) then
 begin
   raise Exception.Create(‘Could not locate Connectivity Service‘);
 end;
 Result:=TJPowerManager.Wrap((Native as ILocalObject).GetObjectID) ;
 if not Assigned(Result) then
 begin
   raise Exception.Create(‘Could not access Connectivity Manager‘);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 PowerManager:JPowerManager ;
begin
 PowerManager:=GetPowerManager ;
 if PowerManager.isScreenOn then
 begin
   ShowMessage(‘未关闭状态‘);
 end
 else
 begin
   ShowMessage(‘已经关闭状态‘);
 end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
 PowerManager:JPowerManager ;
begin
  PowerManager:=GetPowerManager ;
  if PowerManager.isScreenOn then
  begin
    mmo1.Lines.Add(‘没有关闭‘)
  end
  else
  begin
    mmo1.Lines.Add(‘关闭状态‘) ;
  end;
end;

end.
//====================================================
//
//  转换来自JavaClassToDelphiUnit
//  原始作者:ying32
//  QQ: 1444386932
//      396506155
//  Email:[email protected]
//
//  修改 By:Flying Wang & 爱吃猪头肉
//  请不要移除以上的任何信息。
//  请不要将本版本发到城通网盘,否则死全家。
//
//  Email:[email protected]
//
//  生成时间:2014/12/19 星期五 10:29:24
//  工具版本:1.0.2014.12.12
//
//====================================================
unit Androidapi.JNI.android.os.PowerManager;

interface

uses
  Androidapi.JNI.android.os.PowerManager_WakeLock,
  Androidapi.JNIBridge,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.os;

type
// ===== Forward declarations =====

  JPowerManager = interface; //android.os.PowerManager

// ===== Interface declarations =====

  JPowerManagerClass = interface(JObjectClass)
  [‘{6600EE55-0B62-4AC6-8C41-9C0AD9AAE509}‘]
    { static Property Methods }
    {class} function _GetPARTIAL_WAKE_LOCK: Integer;
    {class} function _GetFULL_WAKE_LOCK: Integer;
    {class} function _GetSCREEN_BRIGHT_WAKE_LOCK: Integer;
    {class} function _GetSCREEN_DIM_WAKE_LOCK: Integer;
    {class} function _GetACQUIRE_CAUSES_WAKEUP: Integer;
    {class} function _GetON_AFTER_RELEASE: Integer;

    { static Methods }

    { static Property }
    {class} property PARTIAL_WAKE_LOCK: Integer read _GetPARTIAL_WAKE_LOCK;
    {class} property FULL_WAKE_LOCK: Integer read _GetFULL_WAKE_LOCK;
    {class} property SCREEN_BRIGHT_WAKE_LOCK: Integer read _GetSCREEN_BRIGHT_WAKE_LOCK;
    {class} property SCREEN_DIM_WAKE_LOCK: Integer read _GetSCREEN_DIM_WAKE_LOCK;
    {class} property ACQUIRE_CAUSES_WAKEUP: Integer read _GetACQUIRE_CAUSES_WAKEUP;
    {class} property ON_AFTER_RELEASE: Integer read _GetON_AFTER_RELEASE;
  end;

  [JavaSignature(‘android/os/PowerManager‘)]
  JPowerManager = interface(JObject)
  [‘{54AAD336-BDE4-447A-8A3C-235EEB4FF8EA}‘]
    { Property Methods }

    { methods }
    function newWakeLock(flags: Integer; tag: JString): JPowerManager_WakeLock; cdecl;
    procedure userActivity(when: Int64; noChangeLights: Boolean); cdecl;
    procedure goToSleep(time: Int64); cdecl;
    function isScreenOn: Boolean; cdecl;
    procedure reboot(reason: JString); cdecl;

    { Property }
  end;

  TJPowerManager = class(TJavaGenericImport<JPowerManagerClass, JPowerManager>) end;

implementation

procedure RegisterTypes;
begin
  TRegTypes.RegisterType(‘Androidapi.JNI.android.os.PowerManager.JPowerManager‘,
    TypeInfo(Androidapi.JNI.android.os.PowerManager.JPowerManager));
end;

initialization
  RegisterTypes;
end.
//====================================================
//
//  转换来自JavaClassToDelphiUnit
//  原始作者:ying32
//  QQ: 1444386932
//      396506155
//  Email:[email protected]
//
//  修改 By:Flying Wang & 爱吃猪头肉
//  请不要移除以上的任何信息。
//  请不要将本版本发到城通网盘,否则死全家。
//
//  Email:[email protected]
//
//  生成时间:2014/12/19 星期五 10:29:44
//  工具版本:1.0.2014.12.12
//
//====================================================
unit Androidapi.JNI.android.os.PowerManager_WakeLock;

interface

uses
  Androidapi.JNI.android.os.WorkSource,
  Androidapi.JNIBridge,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.os;

type
// ===== Forward declarations =====

  JPowerManager_WakeLock = interface; //android.os.PowerManager$WakeLock

// ===== Interface declarations =====

  JPowerManager_WakeLockClass = interface(JObjectClass)
  [‘{5394217C-F576-4C1C-87B7-1EECC1893E74}‘]
    { static Property Methods }

    { static Methods }

    { static Property }
  end;

  [JavaSignature(‘android/os/PowerManager$WakeLock‘)]
  JPowerManager_WakeLock = interface(JObject)
  [‘{BD52A293-0D29-4637-B236-00D0DA2D50B1}‘]
    { Property Methods }

    { methods }
    procedure setReferenceCounted(value: Boolean); cdecl;
    procedure acquire; cdecl; overload;
    procedure acquire(timeout: Int64); cdecl; overload;
    procedure release; cdecl;
    function isHeld: Boolean; cdecl;
    procedure setWorkSource(ws: JWorkSource); cdecl;
    function toString: JString; cdecl;

    { Property }
  end;

  TJPowerManager_WakeLock = class(TJavaGenericImport<JPowerManager_WakeLockClass, JPowerManager_WakeLock>) end;

implementation

procedure RegisterTypes;
begin
  TRegTypes.RegisterType(‘Androidapi.JNI.android.os.PowerManager_WakeLock.JPowerManager_WakeLock‘,
    TypeInfo(Androidapi.JNI.android.os.PowerManager_WakeLock.JPowerManager_WakeLock));
end;

initialization
  RegisterTypes;
end.
//====================================================
//
//  转换来自JavaClassToDelphiUnit
//  原始作者:ying32
//  QQ: 1444386932
//      396506155
//  Email:[email protected]
//
//  修改 By:Flying Wang & 爱吃猪头肉
//  请不要移除以上的任何信息。
//  请不要将本版本发到城通网盘,否则死全家。
//
//  Email:[email protected]
//
//  生成时间:2014/12/19 星期五 10:37:54
//  工具版本:1.0.2014.12.12
//
//====================================================
unit Androidapi.JNI.android.os.WorkSource;

interface

uses
  Androidapi.JNIBridge,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.os;

type
// ===== Forward declarations =====

  JWorkSource = interface; //android.os.WorkSource

// ===== Interface declarations =====

  JWorkSourceClass = interface(JObjectClass)
  [‘{B839C6E0-F417-49DF-8DC9-51FD9BF7C217}‘]
    { static Property Methods }
    {class} function _GetCREATOR: JParcelable_Creator;

    { static Methods }
    {class} function init: JWorkSource; cdecl; overload;
    {class} function init(orig: JWorkSource): JWorkSource; cdecl; overload;

    { static Property }
    {class} property CREATOR: JParcelable_Creator read _GetCREATOR;
  end;

  [JavaSignature(‘android/os/WorkSource‘)]
  JWorkSource = interface(JObject)
  [‘{C0180882-E13D-4E8A-BDC9-108629C9F981}‘]
    { Property Methods }

    { methods }
    procedure clear; cdecl;
    function diff(other: JWorkSource): Boolean; cdecl;
    procedure &set(other: JWorkSource); cdecl;
    function add(other: JWorkSource): Boolean; cdecl;
    function remove(other: JWorkSource): Boolean; cdecl;
    function describeContents: Integer; cdecl;
    procedure writeToParcel(dest: JParcel; flags: Integer); cdecl;

    { Property }
  end;

  TJWorkSource = class(TJavaGenericImport<JWorkSourceClass, JWorkSource>) end;

implementation

procedure RegisterTypes;
begin
  TRegTypes.RegisterType(‘Androidapi.JNI.android.os.WorkSource.JWorkSource‘,
    TypeInfo(Androidapi.JNI.android.os.WorkSource.JWorkSource));
end;

initialization
  RegisterTypes;
end.
时间: 2024-10-17 15:35:20

delphiXE7关于android 检测屏幕是否处于关闭状态的相关文章

Android保持屏幕常亮唤醒状态

第一步:  首先添加权限: <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 第二步:代码实现如下: public class ScreenActivity extends Activity { PowerManager powerManager = null; WakeLock wakeLock = null; @Override protected

java exec检测tomcat服务处于何中状态(正常运行,启动中或停止中, 停止状态)

思想:利用cmd命令进行检查 正常运行:cmd /c net start 会输出已启动的列表,比对是否在列表中 启动中或停止中:cmd /c net start tomcat 会输出启动中或停止中的关系提示 停止状态:上面两种之外,就是停止状态 扩展: 本来是想利用cmd startup.bat启动是tomcat,然后此状态(starting)保存到数据库 利用cmd  startdown.bat关闭是tomcat,然后此状态(stopping)保存到数据库 发现其中启动和关闭还需要时间,无法检

164检测屏幕中动画的状态

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UIViewController 4 @property (strong, nonatomic) UIImageView *imgVAnimation; 5 6 @end ViewController.m 1 #import "ViewController.h" 2 3 @interface ViewControl

【Android】如何调节屏幕亮度,关闭屏幕

内容简介 [Android]如何调节屏幕亮度,关闭屏幕 [Android]如何调节屏幕亮度,关闭屏幕 工作中遇到的,记录一下. 方法1: PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag"); wl.ac

Supporting Multiple Screens(支持Android各种屏幕尺寸)

原文链接 本文翻译自Supporting Multiple Screens. 目前我这篇翻译应该是最全,最完整的官方文档翻译,转载我的翻译请联系本人,标明出处. Supporting Multiple Screens Android runs on a variety of devices that offer different screen sizes and densities. For applications, the Android system provides a consist

Android检测Cursor泄漏的原理以及使用方法(转)

简介: 本文介绍如何在 Android 检测 Cursor 泄漏的原理以及使用方法,还指出几种常见的出错示例.有一些泄漏在代码中难以察觉,但程序长时间运行后必然会出现异常.同时该方法同样适合于其他需要检测资源泄露的情况. 最近发现某蔬菜手机连接程序在查询媒体存储(MediaProvider)数据库时出现严重 Cursor 泄漏现象,运行一段时间后会导致系统中所有使用到该数据库的程序无法使用.另外在工作中也常发现有些应用有 Cursor 泄漏现象,由于需要长时间运行才会出现异常,所以有的此类 bu

Android判断当前的android设备是否处于联网状态

首先,要想获得当前android设备是否处于联网状态,那么android本身给我们提供了一个服务 private ConnectivityManager connectivityManager;//用于判断是否有网络 connectivityManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);//获取当前网络的连接服务 NetworkInfo info = con

浅谈Android多屏幕的事

浅谈Android多屏幕的事 一部手机可以同时看片.聊天,还可以腾出一支手来撸!这么吊的功能(非N版本,非第三方也能实现,你不知道吧)摆在你面前,你不享用?不关注它是怎样实现的?你来,我就满足你的欲望! 一部手机可以同时看片.聊天,还可以腾出一支手来撸==!就像这样: 是时候告别来回切换应用屏幕的酸爽了,还可以在分屏模式下两Activity间直接拖放数据! 好高大上的样子!这是怎么实现的?别急,我们一一道来: kitkat(4.4)版本对多任务分屏的实现 由于相关的代码和功能被封装及隐藏起来,所

Android下屏幕锁屏弹窗的正确姿势

最近在做一个关于屏幕锁屏悬浮窗的功能,于是在网上搜索了很多安卓屏幕锁屏的相关资料,鉴于网上的资料比较零碎,所以我在这里进行整理总结.本文将从以下两点对屏幕锁屏进行解析: 1. 如何监听系统屏幕锁屏 2. 如何在锁屏界面弹出悬浮窗 如何监听系统屏幕锁屏 经过总结,监听系统的锁屏可以通过以下两种方式: 1) 代码直接判定 2) 接收广播 1) 代码直接判定 代码判断方式,也有两种方法: a) 通过PowerManager的isScreenOn方法,代码如下: PowerManager pm = (P