Android灯光系统--通知灯深入分析
Android灯光系统--通知灯深入分析
通知的类别
声音
振动
闪灯
APP如何发出通知灯请求
getSystemService(获得通知服务)
构造notification
类别
其他参数(颜色,onMS,offMS)
发出通知
系统如何处理
启动通知Service
收到通知之后
分辨通知类型
执行响应操作
对于通知灯
获得LightService
执行灯光相关操作
APP如何获得通知服务
ContextImp:resigsterService
返回一个NotificationManager对象
构造Notification
NotificationManager.notify()将通知发送出去
发送通知之后如何调用通知灯
Service=getService() //获得某个服务
注册有Notification服务
根据名字Notification获得Service服务
Service.enqueueNotificationwithTag //放入通知队列
通过enqueueNotificationwithTag中的buzzBeepBlinkLocked判断是否是属于哪种通知类别
获得通知属于闪灯,调用updateLightsLocked()
取出notification当中的参数,调用mNotificationLights类当中的setFlashing
注册LightManager服务
根据ID从LightManager中返回获取mNotificationLights类
编写模拟通知灯安卓程序
定义按钮,控制20S之后熄屏亮灯
定义Flashing boolean型变量,用于控制按钮操作
设置按钮响应函数--判断按钮操作,改变按钮text值,并且发出通知
构造通知执行方法 - 实现Runnable接口方法
获得按钮状态
调用开通知灯函数
获得通知服务
构造通知,设置参数
发送通知
关闭通知灯函数
获得通知服务
取消通知灯服务
通知
- 延迟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灯光系统--通知灯深入分析的更多相关文章
- Android灯光系统--通知灯深入分析【转】
本文转自:https://www.cnblogs.com/lkq1220/p/6406261.html Android灯光系统--通知灯深入分析 通知的类别 声音 振动 闪灯 APP如何发出通知灯请求 ...
- Android系统之灯光系统--通知灯深入分析
Android通知灯的深入分析 通知的类别 声音 振动 闪灯 APP如何发出通知灯请求 getSystemService(通知服务) 构造notification 类别 其他参数(颜色,onMS,of ...
- 8.5 Android灯光系统_源码分析_通知灯
参考文章(应用程序举例)how to use the LED with Android phonehttp://androidblogger.blogspot.jp/2009/09/tutorial- ...
- 【转】Android中通知的提示音、震动和LED灯效果小例子
通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现.发出一条通知后,手机最上方 ...
- Android灯光系统--深入理解背光灯
Android灯光系统--深入理解背光灯 一.怎么控制背光灯(简述) APP将亮度值写入数据库 线程检测数据库的值是否发生变化 这种机制成为"内容观察者"--contentObse ...
- Android灯光系统_编写HAL_lights.c【转】
本文转载自:https://blog.csdn.net/qq_33443989/article/details/77074411 1>. 编写灯光系统的HAL层 之 HAL_light.c1&l ...
- 8.1 Android灯光系统_总体框架
1.框架 APP(java语言实现) ------------------------------- JNI(c++语言实现) 向上提供Java执行c函数的接口 向下访问HAL ------ ...
- android: 使用通知
8.1 使用通知 通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望向 用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现.发 ...
- Android消息通知(notification)和PendingIntent传值
通知栏的自定义布局:转:http://blog.csdn.net/vipzjyno1/article/details/25248021 拓展 实现自定义的通知栏效果: 这里要用到RemoteViews ...
随机推荐
- Linux下缓冲区溢出攻击的原理及对策
前言 从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用.当函数调用发生时,新的堆栈 帧被压入堆栈:当函数返回时,相应的堆栈帧从堆栈中弹出.尽管堆栈帧结构的引入为在高级语言中实 ...
- Python面试数据库
1.列举常见的关系型数据库和非关系型都有那些? 关系型 : MySQL,SQL Server ,Oracle , Sybase, DB2 非关系型 : Redis, MongodDB 2.MySQL常 ...
- Map集合遍历
Map<String,String> map = new HashMap<String, String>(); map.put("1","java ...
- CGPoint->NSValue
http://blog.sina.com.cn/s/blog_65a8ab5d0101c0n2.html CGPoint point = CGPointMake(self.superview.nim_ ...
- 自定义vueawesomeswiper分页器样式
swiperOption: {//swiper的配置项 notNextTick: true,//想获得swiper实例对象,这个必须为true direction: 'vertical', // gr ...
- 高并发秒杀系统方案(JSR303参数校验)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...
- byte处理的几种方法
/** * 字符串转16进制byte * @param * @return * @throws Exception * @author hw * @date 2018/10/19 9:47 */ pr ...
- ubuntu 磁盘分区
1:查看分区情况:df -h admin@iZwz92c0zpe8t65qe996ckZ:/$ df -h Filesystem Size Used Avail Use% Mounted on ude ...
- [py]pycharm远程环境添加
pycharm配置settings.jar pycharm远程环境调用.zip xadmin xadmin-django2 pycharm激活 最新2018.2激活---更新2018年8月8日 15: ...
- $scope.$apply
对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的阻力还真是不少.不过我相信,只要下功夫,即使是反人类的设计也不是什么大的问题. Okay, ...