Android灯光系统--通知灯深入分析

通知的类别

  • 声音

  • 振动

  • 闪灯

APP如何发出通知灯请求

  1. getSystemService(获得通知服务)

  2. 构造notification

    • 类别

    • 其他参数(颜色,onMS,offMS)

  3. 发出通知

系统如何处理

  1. 启动通知Service

  2. 收到通知之后

    • 分辨通知类型

    • 执行响应操作

  3. 对于通知灯

    • 获得LightService

    • 执行灯光相关操作

APP如何获得通知服务

  1. ContextImp:resigsterService

  2. 返回一个NotificationManager对象

  3. 构造Notification

  4. NotificationManager.notify()将通知发送出去

发送通知之后如何调用通知灯

  1. Service=getService() //获得某个服务

    • 注册有Notification服务

    • 根据名字Notification获得Service服务

  2. Service.enqueueNotificationwithTag //放入通知队列

  3. 通过enqueueNotificationwithTag中的buzzBeepBlinkLocked判断是否是属于哪种通知类别

  4. 获得通知属于闪灯,调用updateLightsLocked()

  5. 取出notification当中的参数,调用mNotificationLights类当中的setFlashing

    • 注册LightManager服务

    • 根据ID从LightManager中返回获取mNotificationLights类

编写模拟通知灯安卓程序

  1. 定义按钮,控制20S之后熄屏亮灯

    • 定义Flashing boolean型变量,用于控制按钮操作

    • 设置按钮响应函数--判断按钮操作,改变按钮text值,并且发出通知

  2. 构造通知执行方法 - 实现Runnable接口方法

    • 获得按钮状态

      • 调用开通知灯函数

      • 获得通知服务

      • 构造通知,设置参数

      • 发送通知

    • 关闭通知灯函数

      • 获得通知服务

      • 取消通知灯服务

  3. 通知

    • 延迟20S通知调用postDelayed函数

附上详细代码:


package com.example.alienware.app_0002_lightdemo; import android.app.Notification; import android.app.NotificationManager; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Button; import android.view.View; /* * 模拟熄屏时候,短信等通知发生时候,通知灯亮起 * 设置屏幕背光亮时间为15s,才可以进行下列实验 * Date:2017.2.16 Author:LKQ * 代码原创者:韦东山老师 */ public class MainActivity extends AppCompatActivity { private Button mLightButton = null; boolean Flashing = false; final private int LED_NOTIFICATION_ID = 109; private Handler mLightHandler = new Handler(); private LightRunnable mLightRunnable = new LightRunnable(); //实现消息通知后的执行方法 class LightRunnable implements Runnable{ @Override public void run() { if(Flashing){ BlueFlashLight(); //蓝灯闪亮 } else{ ClearLED(); //关闭通知灯 } } } private void BlueFlashLight() { NotificationManager nm = (NotificationManager)getSystemService( NOTIFICATION_SERVICE ); //获取通知服务 Notification notif = new Notification(); //构造通知类型 notif.flags = Notification.FLAG_SHOW_LIGHTS; //设置通知类型为通知灯 notif.ledARGB = 0xFF0000ff; //颜色 notif.ledOnMS = 1000; notif.ledOffMS = 1000; //闪烁时间为1S nm.notify(LED_NOTIFICATION_ID, notif); //发送通知 } private void ClearLED() { NotificationManager nm = ( NotificationManager ) getSystemService( NOTIFICATION_SERVICE ); nm.cancel( LED_NOTIFICATION_ID ); //关闭通知灯 } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLightButton = (Button)findViewById(R.id.button); mLightButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Perform action on click Flashing = !Flashing; if (Flashing) { mLightButton.setText("Stop Flashing the Light !"); } else { mLightButton.setText("Flashing Light at 20S"); } mLightHandler.postDelayed(mLightRunnable, 20000); //20S之后,即是熄屏时候,通知灯闪烁 } }); } }

Android系统之灯光系统--通知灯深入分析的更多相关文章

  1. Android灯光系统--通知灯深入分析【转】

    本文转自:https://www.cnblogs.com/lkq1220/p/6406261.html Android灯光系统--通知灯深入分析 通知的类别 声音 振动 闪灯 APP如何发出通知灯请求 ...

  2. Android灯光系统--通知灯深入分析

    Android灯光系统--通知灯深入分析 通知的类别 声音 振动 闪灯 APP如何发出通知灯请求 getSystemService(获得通知服务) 构造notification 类别 其他参数(颜色, ...

  3. Android系统开发--灯光系统之电池灯的流程分析

    Android系统开发--Android灯光系统之电池灯的流程分析 前期系统准备 运行初始化,创建系统服务 创建电池服务,获得电池灯;创建监听者监听上报电池事件: mSystemServiceMana ...

  4. Android system :灯光系统_HAL_lights

    一.android灯光系统框架: Java: frameworks/base/services/core/java/com/android/server/lights/LightsService.ja ...

  5. 8.5 Android灯光系统_源码分析_通知灯

    参考文章(应用程序举例)how to use the LED with Android phonehttp://androidblogger.blogspot.jp/2009/09/tutorial- ...

  6. Android系统--输入系统(十)Reader线程_核心类及配置文件深入分析

    Android系统--输入系统(十)Reader线程_核心类及配置文件深入分析 0. 前言 个人认为该知识点阅读Android源代码会不仅容易走进死胡同,并且效果并不好,前脚看完后脚忘记,故进行总结, ...

  7. Android系统--灯光系统驱动编写

    Android系统开发--Android灯光系统tiny4412_led_class驱动编写 框架分析 led_classdev_4412结构体 创建led_classdev_4412结构体 分配结构 ...

  8. Android驱动学习-灯光系统总体框架

    Android的app访问硬件的大致流程可以分为一下几个步骤: 我们之前说过Android系统在添加新的硬件的时候需要添加一个接口java文件,通过jni来访问硬件. 这个java是我们自己实现的,我 ...

  9. Android系统中默认值的意义列表

    转自:http://blog.csdn.net/yabg_zhi_xiang/article/details/51727844 在SettingsProvider中设置系统中默认值,我们可以在fram ...

随机推荐

  1. codeforces #304 DIV2

    先送上一篇题解(虽然全英文的):http://codeforces.com/blog/entry/18034 A题:http://codeforces.com/problemset/problem/5 ...

  2. CABasicAnimation 基本动画 分类: ios技术 2015-07-16 17:10 132人阅读 评论(0) 收藏

    几个可以用来实现热门APP应用PATH中menu效果的几个方法 +(CABasicAnimation *)opacityForever_Animation:(float)time //永久闪烁的动画 ...

  3. webstrom 编码

    设置文件保存格式: webstrom的右下角选择你需要的编码

  4. 程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理 - by Glede

    最近我们的cocos2d-x游戏项目已经进入了正式开发的阶段了,几个dev都辛苦码代码.cocos2d-x还是一套比较方便的api的,什么action啊.director啊.ccpoint啊都蛮便捷的 ...

  5. Visual Studio 2012 开发环境配置+控制台工具+桌面应用程序

    一.界面布局视图设置 1.窗口的布局.控制台窗口运行恢复到开发环境的设置方法 也可以保存好设好的个性化设置,导入设置: 2.视图|服务器资源管理器(sever explorer) 可以访问数据源.服务 ...

  6. linux设置好IP后,可以访问内网,不能访问外网

    1,设置网卡,ip vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为et ...

  7. 在php中使用jquery uploadify进行多图片上传

    jquery uploadify是一款Ajax风格的批量图片上传插件,在PHP中使用jquery uploadify很方便,请按照本文介绍的方法和步骤,为你的PHP程序增加jquery uploadi ...

  8. php 常用代码段

    1.写文件 $fp = fopen("jsapi_ticket.json", "w+"); fwrite($fp, $str); fclose($fp); 2. ...

  9. UWP锁、解屏后无法响应操作

    UWP的Unity项目,在PC上运行时,如果锁屏(手动或自动)再解锁,游戏画面和进度正常,但是无法进行鼠标.键盘或手柄的操作.这Bug在很多线上的Unity项目中存在. 原因:UWP App的系统事件 ...

  10. 数值选择器(NumberPicker)的功能与用法

    数值选择器用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值.使用该组件常用如下三个方法. setMinValue(int minVal):设置该组件支持的最小值. setMax ...