[转]android detect screen on and screen off
来源:互联网 发布:三中三复式计算器软件 编辑:程序博客网 时间:2024/05/19 18:41
原文出自: http://blog.kenyang.net/2010/11/android-detect-screen-on-and-screen-off.html
android detect screen on and screen off
android偵測螢幕的關閉與開啟,
和偵測sd card一樣,
Intent.ACTION_SCREEN_OFF和Intent.ACTION_SCREEN_ON是不能在AndroidManifest.xml裡面宣告的
如:
這樣子的宣告沒有用,你永遠都receive不到任何action
詳細原因我也不知道,但是可以透過registerReceiver去實作,
這裡舉個例子,先啟動一個service,由這個service去registerReceiver
由service啟動的好處是,service可以常駐,
如果你用acitivity去registerReceiver
這個acitivity關閉以後,你一樣receive不到任何action
且如果你只是想偵測acitivity的關閉與否的話,可以直接利用onResume和onPause去偵測即可
不用特地去registerReceiver
但是如果今天你有一個widget在桌面,
且我們是無法透過widget去registerReceiver,
會出現exception(ReceiverCallNotAllowedException)
所以一定得透過service去啟動。
service的code如下:
receiver的code如下:
接著就是在widget中去startService
如下:
android detect screen on and screen off
android偵測螢幕的關閉與開啟,
和偵測sd card一樣,
Intent.ACTION_SCREEN_OFF和Intent.ACTION_SCREEN_ON是不能在AndroidManifest.xml裡面宣告的
如:
?
1
2
3
4
5
6
<
receiver
android:name
=
"receiverScreen"
>
<
intent-filter
>
<
action
android:name
=
"android.intent.action.SCREEN_ON"
/>
<
action
android:name
=
"android.intent.action.SCREEN_OFF"
/>
</
intent-filter
>
</
receiver
>
這樣子的宣告沒有用,你永遠都receive不到任何action
詳細原因我也不知道,但是可以透過registerReceiver去實作,
這裡舉個例子,先啟動一個service,由這個service去registerReceiver
由service啟動的好處是,service可以常駐,
如果你用acitivity去registerReceiver
這個acitivity關閉以後,你一樣receive不到任何action
且如果你只是想偵測acitivity的關閉與否的話,可以直接利用onResume和onPause去偵測即可
不用特地去registerReceiver
但是如果今天你有一個widget在桌面,
且我們是無法透過widget去registerReceiver,
會出現exception(ReceiverCallNotAllowedException)
所以一定得透過service去啟動。
service的code如下:
?
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
public
class
serviceScreen
extends
Service {
@Override
public
IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return
null
;
}
@Override
public
void
onStart(Intent intent,
int
startId) {
super
.onStart(intent, startId);
try
{
IntentFilter filter =
new
IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver =
new
receiverScreen();
registerReceiver(mReceiver, filter);
}
catch
(Exception e) {
Log.d(
"main"
,e.toString());
}
}
}
receiver的code如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public
class
receiverScreen
extends
BroadcastReceiver {
@Override
public
void
onReceive(Context context, Intent intent) {
if
(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
//收到螢幕開啟的通知
}
else
{
//收到螢幕關閉的通知
}
}
}
接著就是在widget中去startService
如下:
?
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
public
class
widgetSmall
extends
AppWidgetProvider {
@SuppressWarnings
(
"static-access"
)
@Override
public
void
onUpdate(Context context, AppWidgetManager appWidgetManager,
int
[] appWidgetIds) {
super
.onUpdate(context, appWidgetManager, appWidgetIds);
//啟動一個service
context.startService(
new
Intent(context, serviceScreen.
class
));
}
@SuppressWarnings
(
"static-access"
)
@Override
public
void
onDeleted(Context context,
int
[] appWidgetIds) {
super
.onDeleted(context, appWidgetIds);
//當這個widget被刪除時,就stopService
context.stopService(
new
Intent(context, serviceScreen.
class
) );
android.os.Process.killProcess(android.os.Process.myPid());
}
}
- [转]android detect screen on and screen off
- Android Screen on/off flow
- On-screen Rendering vs. Off-screen Rendering
- Android如何在Activity中调用Screen off 和 Screen on接口
- Turning Off Screen Locking
- Android keep screen on 方法
- Android screen size and densities.
- screen.availWidth and screen.height
- 探寻Android系统中的Old CRT OFF-Screen Animation
- Getting Android Sensor Events While The Screen is Off
- Android Game Development - Moving Images on Screen
- Android Keep screen on(保持屏幕唤醒)
- Screen
- screen
- screen
- screen
- screen
- screen
- java设计模式之代理模式
- arm-linux下交叉编译json-c-0.9库遇到的编译问题
- json-c-0.9库的json_object_object_get()引发崩溃问题
- sqlite3插入数据或更新数据的database is locked问题
- 在WINDOWS下使用PHP+MYSQL的乱码问题--统一换成UTF-8
- [转]android detect screen on and screen off
- 编译器不正确造成的提示:ts_test: line 1: syntax error: unexpected \"(\"
- 在ARM+LINUX上使用pppd拔号上网(GPRS)流程
- Big-Endian和Little-Endian的判断,以及我写的C语言测试程序
- [转贴]WindowsXP下搭建Git服务器
- [转]C++著名程序库的比较和学习经验
- wget 1.13.4 移植到嵌入式ARM上的过程
- C语言中指向函数的指针(我见过的讲的最清晰的文章)
- 摆脱穷人思维,成就财富梦想
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
紫檀手杖
不锈钢手杖
智慧手杖
古树的手杖
探路者手杖
皇族手杖
奥瓦的手杖
手杖素材
探索者的手杖
玫瑰手杖怎么获得
金手杖养老公寓
老人用的手杖
登山手杖图片
拐杖价格
拐杖的意思
拐杖图片
拐杖
老年人拐杖图片和价格
拐棍图片
拐扙
一副拐杖多少钱
老年拐杖椅
降龙木拐杖
上古守护者的手杖
第五人格玫瑰手杖许愿码
地下城堡2湮灭之力手杖
板手
手板
电动板手什么牌子好
快速手板
手板模型加工
手板模型厂家
合金手板
手板硅胶
手机手板模型
手板模型精雕机
电板手价格
手板脱皮是什么原因
虎门手板
手板模型厂
硅胶手板模型制作