您的位置:首页 > 其它

锁屏状态下点亮屏幕,并弹出闹钟提示信息

2013-04-03 19:49 316 查看
锁屏状态下点亮屏幕,并弹出闹钟提示信息,可以在锁屏界面上取消闹钟;使用广播接收闹钟定时:

下面是例子里的核心代码如下

android 设置定时闹钟(包括提醒一次和循环提醒):

Intent intent = new Intent(MainActivity.this,MyAlarmBroadCast.class);

/**

* context 指定实例

* requestcode 可以作为闹钟的唯一性标识

* intent The Intent to be broadcast

* flags May be FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT,

*/

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);



/***

* 获取全局定时器的服务管理器

*/

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);



/**

* 指定的任务只会执行一次,如果该pendingIntent指定的任务已经被执行过了,那么该方法直接会被cancel掉。

* set(int type, long triggerAtTime, PendingIntent operation)

* type 指定定时模式。

* triggerAtTime 触发任务的时间。该参数和定时模式息息相关

* operation 该参数指定一个广播Intent,当时间到了时,系统会广播里面的intent,触发相应的广播接收者执行某些操作,比如响铃……

*/

alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

/**

* 通过该方法指定的任务会一直间隔执行,第三个参数就指定了执行的时间间隔

* 如果我们想取消的话,请使用:alarmManager.cancel(pendingIntent);

* 注意,这里的pendingIntent要和setRepeating方法中的一致哦。

*/

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5*1000, pendingIntent);

android取消指定闹钟:

Intent intent = new Intent(AlarmReminderActivity.this,MyAlarmBroadCast.class);

/**

* context 指定实例

* requestcode 可以作为闹钟的唯一性标识,根据这个的不同来删除闹钟

* intent The Intent to be broadcast

* flags May be FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT,

*/

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);



/***

* 获取全局定时器的服务管理器

*/

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);



alarmManager.cancel(pendingIntent);

android唤醒锁定屏幕:

PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);

WakeLock mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.SCREEN_DIM_WAKE_LOCK, "SimpleTimer");

mWakelock.acquire();

该方法的使用一定要伴随mWakelock.release();否则会报异常;

推荐使用方法:在唤醒屏幕显示的activity的onResume方法中唤醒,在onPause方法中release;

如何让activity显示在锁屏界面上:

首先要唤醒锁定屏幕,然后设置activity的属性,使它可以显示在锁屏界面上;

唤醒屏幕的方法参考上面;

activity的设置包括两部分:

1-onCreate方法中设置如下代码:

super.onCreate(savedInstanceState);

final Window win = getWindow();

win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON

| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

setContentView(R.layout.act_alarmreminder);

2-AndroidManifest.xml对该activity的声明中设置属性:

android:label="@string/app_name"

android:launchMode="singleInstance"

android:excludeFromRecents="true"

android:taskAffinity=""

android:theme="@android:style/Theme.Wallpaper.NoTitleBar"(这一行很重要)

android:configChanges="orientation|keyboardHidden|keyboard|navigation"

具体可以参考例子:http://download.csdn.net/detail/jjmm2009/5218169

下载资源需要5个可用分,可能有点高,我的目的是希望大家能够根据文章里的代码自己实现这个功能,不希望大家直接下载例子运行;希望对大家有帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐