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 类别 其他参数(颜色, ...
- Android系统开发--灯光系统之电池灯的流程分析
Android系统开发--Android灯光系统之电池灯的流程分析 前期系统准备 运行初始化,创建系统服务 创建电池服务,获得电池灯;创建监听者监听上报电池事件: mSystemServiceMana ...
- Android system :灯光系统_HAL_lights
一.android灯光系统框架: Java: frameworks/base/services/core/java/com/android/server/lights/LightsService.ja ...
- 8.5 Android灯光系统_源码分析_通知灯
参考文章(应用程序举例)how to use the LED with Android phonehttp://androidblogger.blogspot.jp/2009/09/tutorial- ...
- Android系统--输入系统(十)Reader线程_核心类及配置文件深入分析
Android系统--输入系统(十)Reader线程_核心类及配置文件深入分析 0. 前言 个人认为该知识点阅读Android源代码会不仅容易走进死胡同,并且效果并不好,前脚看完后脚忘记,故进行总结, ...
- Android系统--灯光系统驱动编写
Android系统开发--Android灯光系统tiny4412_led_class驱动编写 框架分析 led_classdev_4412结构体 创建led_classdev_4412结构体 分配结构 ...
- Android驱动学习-灯光系统总体框架
Android的app访问硬件的大致流程可以分为一下几个步骤: 我们之前说过Android系统在添加新的硬件的时候需要添加一个接口java文件,通过jni来访问硬件. 这个java是我们自己实现的,我 ...
- Android系统中默认值的意义列表
转自:http://blog.csdn.net/yabg_zhi_xiang/article/details/51727844 在SettingsProvider中设置系统中默认值,我们可以在fram ...
随机推荐
- 处理Block中的self问题(Capturing 'self' strongly in this block is likely to lead to a retain cycle)
警告:ARC Retain Cycle Capturing 'self' strongly in this block is likely to lead to a retain cycle 代码: ...
- uWSGI参考资料(1.0版本的配置选项列表)
Reference: http://blog.csdn.net/kevin6216/article/details/15378617 uWSGI参考资料(1.0版本的配置选项列表) 下面的内容包含了大 ...
- 一 APPIUM基本理论知识
1.APPIUM介绍 Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用.所谓的“移动原生应用”是指那些用 iOS SDK 或者 A ...
- IOS 创建和设置pch
1.添加pch文件 2.修改工程配置文件 Building Settings->All->Apple LLVM 6.0 -Language -> Prefix Header
- ubuntu系统中crontab的使用介绍
1.创建crontab任务 用户hancool
- javascript设计模式之解释器模式详解
http://www.jb51.net/article/50680.htm 神马是“解释器模式”? 先翻开<GOF>看看Definition:给定一个语言,定义它的文法的一种表示,并定义一 ...
- 推荐系统中的Graph Model
转自:http://www.cnblogs.com/wentingtu/archive/2012/05/28/2521166.html 推荐中对graph model的研究主要有两个方面,一个是如何构 ...
- CentOS6.5+mysql5.1源码安装过程
一:先安装依赖包(不然配置的时候会报错的!) yum -y install ncurses* libtermcap* gcc-c++* 新建mysql用户 [root@HE1Packages]# gr ...
- 开篇 Android系统的体系结构
1.APPLICATIONS (应用程序层) 2.APPLICATION FRAMEWORK(应用程序框架) android应用程序提供了大量应用程序供开发者使用,当我看开发android应用程序时 ...
- #图# #dijkstra# ----- OpenJudge 726:ROADS
OpenJudge 726:ROADS 总时间限制: 1000ms内存限制: 65536kB 描述 N cities named with numbers 1 ... N are connected ...