zoukankan      html  css  js  c++  java
  • 锁屏状态下点亮屏幕,并弹出闹钟提示信息

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

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

    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”

  • 相关阅读:
    Saltstack module acl 详解
    Saltstack python client
    Saltstack简单使用
    P5488 差分与前缀和 NTT Lucas定理 多项式
    CF613D Kingdom and its Cities 虚树 树形dp 贪心
    7.1 NOI模拟赛 凸包套凸包 floyd 计算几何
    luogu P5633 最小度限制生成树 wqs二分
    7.1 NOI模拟赛 dp floyd
    springboot和springcloud
    springboot集成mybatis
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/3156121.html
Copyright © 2011-2022 走看看