2024年6月15日发(作者:)

龙源期刊网

Android系统定时开关飞行模式代码的实现

作者:张亮

来源:《电脑知识与技术》2012年第32期

摘要:基于Android操作系统的智能手机目前在市场上的占有率排名第一,然而,Android

系统官方并没有提供定时自动开关机的功能,并且,很多品牌的Android手机并不具备关机闹

钟功能,因此,很多人使用打开飞行模式来取代关机操作。该文介绍了一种编程方法,可以根

据设定的时间自动打开或关闭飞行模式,在一定程度上可以解决对自动开关机功能的需求。

关键词:Android;飞行模式;编程

中图分类号:TN929 文献标识码:A 文章编号:1009-3044(2012)32-7743-02

Android 操作系统是Google 公司于2007 年发布的一种智能手机操作平台, 它是一

个由操作系统、中间件、用户友好界面和应用软件组成的, 全面整合的移动软件平台。自推

出以来, Android 受到了业界的广泛关注,基于Android的智能手机的发展也极其迅猛,目

前在智能手机的市场占有率已经稳居第一。然而遗憾的是,Android系统并没有提供定时自动

开关机功能,因此,习惯夜晚关机的用户必须每日晚上手动进行关机操作,次日早晨再手动开

机,比较繁琐。另外,很多厂商开发的基于Android系统的手机并不支持关机闹钟功能,一旦

关机后,设定的闹钟就不再起作用,给用户带来很多不便。因此,越来越多的用户目前倾向使

用启用飞行模式来代替关机操作,因为在飞行模式下,闹钟是可用的。但系统同样没有提供定

时自动开关飞行模式的设置选项,该文的目的就是介绍如何自主编程开发这一功能。

1 飞行模式简介

手机的飞行模式又叫航空模式、航班模式。飞行模式打开后,将关闭手机的通信功能,即

不能接打电话发短信,与基站没有信号联系,也不试图联系基站。同时手机的移动数据网络和

WIFI模块也会被关闭。 因为手机信号会干扰飞机上的电子设备,所以飞机上不允许打开手

机,而在飞行模式下关闭了手机信号的有关功能,手机可以开着继续使用其它功能,如查看电

话本、欣赏手机上的文章、电影等。 所以叫这种模式被称为飞行模式。 因为手机的电量很

大部分都消耗在无线信号通信上,飞行模式下关闭了所有无线信号通信,因此非常省电。

2 代码实现

本系统手机客户端开发环境为Android2.3,采用JDK1.6版和Eclipse3.7来编程实现。

代码主要由两个类组成:AirplaneModeSwitchActivity类和AlarmReceiver类。其中

AirplaneModeSwitchActivity类是Activity类的子类,用来实现程序主界面,主要用来设置定时

开关的时间和启动关闭程序等功能。AlarmReceiver类是BroadcastReceiver类的子类,主要用

来响应AlarmManager发出的广播intent,并执行打开或关闭飞行模式的代码。

龙源期刊网

由于打开和关闭飞行模式的代码流程几乎一致,下面以打开飞行模式为例介绍一下具体的

编程步骤:

1)在主界面上设置TimePicker控件来设置打开飞行模式的时间。TimePicker继承了

FrameLayout类,可以向用户显示一天中的时间(可以为24小时,也可以为AM/PM制),并

允许用户进行选择。

2)通过GregorianCalendar类的默认构造方法取得当前系统的时间,并利用当前时间的年

月日加上TimePicker控件中设置的小时和分钟构造出打开飞行模式的时间。需要特别注意的

是,此时需要比较此时间和当前系统时间的先后,如何当前系统时间已经晚于此时间,说明用

户设置的是第二天这个时候自动打开飞行模式,因此需要将此时间的日期加1。

3)设置Intent和PendingIntent对象,Intent一般是用作Activity、Sercvice、

BroadcastReceiver之间传递数据,PendingIntent 可以看作是对Intent的包装,通常通过

getActivity,getBroadcast ,getService来得到pendingintent的实例,当前activity并不能马上

启动它所包含的intent,而是在外部执行 pendingintent时,来调用封装的intent的。我们这里

设置的Intnent指向AlarmReceiver类,用来当AlarmManager设定时间到达的时候发出广播。

4)设置AlarmManager对象。AlarmManager的作用是:在特定的时刻为我们广播一个指

定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时候,AlarmManager为我们

广播一个我们设定的Intent。 我们通过该对象的setRepeating方法来设置一个重复的定时

器,重复时间为24小时,也就是每天相同的时间打开飞行模式。需要注意的是,我们开始时

尝试使用Timer定时器类来实现相同的功能,但经过实践发现,Timer类定时器在手机进入待

机状态时就不再起作用,因此不适合用在这样的场合使用。

5)当定时器发出广播后,由AlarmReceiver类负责处理。要实现这一点,必须在项目的

文件中加入代码进行说明。AlarmReceiver类是BroadcastReceiver类的子

类,该类对父类的onReceive方法进行了覆盖,自定义了当接收到广播时进行的处理代码。在

这里通过ing(cr,NE_MODE_ON, "0")方法

就可以将飞行模式打开,之后通过广播Intent

(_AIRPLANE_MODE_CHANGED)通知系统飞行模式的状态已经发生了改

变。

3 结束语

Android系统作为目前最为流行的智能手机操作系统,在各方面的性能都比较优秀,然

而,缺乏对自动开关机功能和关机闹钟功能的支持是一大遗憾。该文分析飞行模式的原理,探

讨了用飞行模式取代关机的可能性,并给出了实现定时自动开关飞行模式的代码实现,希望对

Android系统的研究产生一定的参考作用。

龙源期刊网

参考文献:

[1] 郭蕊.基于Android 平台的GPS 定位系统的设计与实现[J].北京工业职业技术学院

学报,2012,11(2).

[2] 倪红军.基于Android 平台的移动终端GPS 研究[J].计算机技术与发展,2012(5).

[3] 百度百科.GPS工作原理[EB/OL]. http:///view/.