Delphi实现安卓Android 广播事件监听

1 篇文章 0 订阅

Android 下的广播简介

在Android下,很多事件需要使用到系统下的广播。例如:你想知道手机电量的变化、是否安装了一个新的程序应用包、扩展介质被移除等信息时。Android广播分为两个方面:广播发送者和广播接收者,通常情况下BroadcastReceiver指的是广播接收者(广播接收器)。
要使广播生效必须先注册广播,实现注册就是告诉系统:要监听什么广播,和监听到之后要做什么动作完成什么工作(自定义广播重写onReceive)。

注册广播

注册广播有两种方式:
1、动态注册(在代码中注册):
通过代码手工注册。当程序关闭时,该接收器也会随之销毁。当然,也可手工调用unregisterReceiver()进行销毁。动态注册必须在程序运行状态下才能接收广播。
2、静态注册(在AndroiMainfest.xml中配置):
Android不能自动销毁该类广播接收器,也就是说当应用程序关闭后,还是会接收广播。

本文主要讲解动态注册,静态注册可参考:《Delphi XE开发 Android 开机自动启动》
请注意,某些应用(或功能)只能使用静态注册方式。

重写onReceive方法

当我们完成广播的注册后,需要重写onReceive方法中去实现事件发生后的处理过程(本例仅发送一个本地通知)。

监听手机屏幕点亮

源码Demo请下载:http://download.csdn.net/detail/tanqth/9891016
该源码事例仅做了手机屏幕点亮的测试,大家可以根据这个代码完成自己需要的实用功能。

主要代码展示

1、建立广播处理类

TScanBroadcastReceiver = class(TJavaLocal, JFMXBroadcastReceiverListener)
1
public
// 重写广播接收事件
procedure onReceive(context: JContext; intent: JIntent); cdecl;
end;
1
2
3
4
5
2、广播接收后的处理

// 广播接收
procedure TScanBroadcastReceiver.onReceive(context: JContext; intent: JIntent);
var
action: String;
MyNotification: TNotification;
begin
action := JStringToString(intent.getAction);
// 判断广播事件
if action = RES_ACTION then
begin
if not Form2.Visible then Form2.Show;
TThread.Synchronize(nil,
procedure
begin
Form2.Memo1.Lines.Add(‘内容:屏幕点亮’);
end);
//实现本地通知
//本地通知详细技术可查看 http://blog.csdn.net/tanqth/article/details/73739313 【文章】
//或 https://item.taobao.com/item.htm?id=536584650957 【代码】
MyNotification := Form2.NotificationCenter1.CreateNotification;
try
MyNotification.Name := ‘新通知’;
MyNotification.Title := ‘屏幕点亮’;
MyNotification.AlertBody :=‘TEST’;
MyNotification.Number:=18;
Form2.NotificationCenter1.PresentNotification(MyNotification);
finally
MyNotification.Free;
end;
end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
动态注册

// 创建接收者
FListener := TScanBroadcastReceiver.Create();
if not Assigned(FListener) then
Exit;

FReceiver := TJFMXBroadcastReceiver.JavaClass.init(FListener);
if not Assigned(FReceiver) then
Exit;
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值