MTK6580(Android6.0)-Psensor APP 编写

news/2024/11/29 10:00:34/

    前面已经学习了Android系统基于MTK6580 平台的kernel,hal,framework 层的机制,接下来可以很容易的写出Psensor的APP了。Psensor 为距离传感器,在实际用途中主要用于拨号时贴脸灭屏,因此,我们只需要实现手靠近手机时候屏幕灭屏,手远离时候屏亮即可。(灭屏的设计主要是基于人脸的误触和手机省电等因素)

Psensor 的应用代码实现如下: 

java/xml代码路径:Psensor.java

   1. 获得senosr和power服务

          //电源服务,获取Power服务用来灭屏操作pm = (PowerManager) getSystemService(Context.POWER_SERVICE);mProximityWakeLock = pm.newWakeLock(32,TAG);//Sensor 服务mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 

2. 获取指定的Sensor对象

        //获取指定类型的传感器对象mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);lSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);  

3.创建监听(listener)对象  ---- 程序进入启动时

  public class MainActivity extends Activity implements  SensorEventListener{protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d(TAG, " onCreate。。。。");  ....//registerListener注册监听器,这是为了能让ManagerSensor回调正确的接口函数,注册的时候我们可以指定sensor的灵敏度// 参数三,检测的精准度  mSensorManager.registerListener(this, mSensor,  SensorManager.SENSOR_DELAY_NORMAL);// SENSOR_DELAY_GAME mSensorManager.registerListener(this, lSensor, SensorManager.SENSOR_DELAY_NORMAL);}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}//sensor 接收到数据后会回调 该 api@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stubLog.d(TAG, "onSensorChanged 。。。。");  if (event.sensor == null) {  return;  }  if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {  float distance = event.values[0];         tvX.setText(String.valueOf(distance)); Log.d(TAG,"distance is :"+distance );  if(distance == 0.0){Log.i(TAG, "the psensor is actived!");	if (mProximityWakeLock.isHeld()) {return;} else{//执行灭屏操作mProximityWakeLock.acquire();// 申请设备电源锁}              }else{Log.i(TAG, "the psensor is not actived!");if (mProximityWakeLock.isHeld()) {return;} else{mProximityWakeLock.setReferenceCounted(false);//执行亮屏操作mProximityWakeLock.release(); // 释放设备电源锁}}}else if(event.sensor.getType() == Sensor.TYPE_LIGHT){//获取精度  float acc = event.accuracy;  //获取光线强度  float lux = event.values[0];  Log.i(TAG, "acc="+acc + " lux="+lux);tvAcc.setText(acc+"");tvLux.setText(lux+"");}}}

   备注:这里的监听对象主要是实现接口SensorEventListener,我们可以让主Activity来实现它,调用registerlistener时候this即使listener对象,由于是接口,所以必须实现SensorEventListener里面的抽象方法。另外,由于通常PSensor和LightSensor 在硬件上是一体的,因此,在此我们可以把LightSensor一并实现

4. 注销listener对象  ----- 程序结束时候

    @Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.i(TAG, "on stop...");if(mSensorManager != null){mProximityWakeLock.release();//释放电源锁,如果不释放finish这个acitivity后仍然会有自动锁屏的效果,不信可以试一试mSensorManager.unregisterListener(this);//注销传感器监听}}
备注:这一步也非常重要,程序结束后,listener 也没有了意义,不然会造成电量消耗,影响续航能力


PS:程序运行具体效果如下,当手遮挡时候,屏幕会灭掉,当使用强光照射时候,lux 的值会变化

      

   


http://www.ppmy.cn/news/494638.html

相关文章

9. mtk6580 热插拔配置

v190有关sim卡热插拔的modem配置、mk配置和codegen.dws的说明 一.当前v190有两个卡座,两个卡座都用,卡座一是sim卡1TF卡(上下卡座且sd中断和sim1中断连在一个卡座脚位上这种情况卡座一不能同时支持sd卡和sim1的热插拔&#xff0c…

MTK6580适应小分辨率

\\192.168.1.17\Share\w201\w201\bootable\bootloader\lk\project\hct6580_we_l.mk \\192.168.1.17\Share\w201\w201\device\haocheng\hct6580_we_l\ProjectConfig.mk 1.17 user:new password:123456 搜索: BOOT_LOGO : qvgal 项目分辨率是240*240,编…

mtk android 触摸屏,MTK6580安卓核心板模块方案

MTK6580安卓核心板模块具备低功耗特色,可以提供先进的功能,包括支持18:9 HD+ 屏幕比例、高达8/13MP 的图像信号处理器(ISP)、Full HD 1080p 视频编译码功能,以及四核心处理器效能表现。同时可以提供高成本效益的设计选择,包括全面整合的蜂巢式系统射频(RF)和在地联机标准,…

MTK6580(Android6.0)-使用DTS注册平台设备、匹配平台驱动

一、初始化device tree file:kernel-3.18/init/main.c asmlinkage __visible void __init start_kernel(void) {...setup_arch(&command_line);... } file:kernel-3.18/arch/arm64/kernel/setup.c void __init setup_arch(char **cmdline_p) { ...unflatten_device_tree()…

智能硬件产品系列 之 MTK6580方案篇(一)硬件选型

智能硬件产品系列 之 MTK6580开发篇(一)硬件选型 开篇小序主板设计:自己设计主板,还是购买核心板?拿来主义:万能的淘宝功能规划:量力而为 开篇小序 还不知道要在家待多久,这时候能接…

FWD:互联网重塑中国商业

《金融时报》中文网特约撰稿人程苓峰 观一叶落知天下秋。先从一个场景说起。 2009年9月10号晚,阿里巴巴集团在2万人聚集的杭州黄龙体育场搞十周年庆典。场上表演,是装扮古怪的马云和来自五大洲的员工。嘉宾台上看戏的高朋满 座,有比如万通冯仑…

程序员面试之道(《程序员面试笔试宝典》)之求职的时候该不该只看钱?

所谓好公司:一是收入,二是环境,三是未来,还有就是无形的福利,比如:和你一起工作的同事都是素质高又专业的人,会让你在工作中更有愉悦感和成就感。 ——《杜拉拉之似水年华》 求职的时候&#…

程序员求职之道(《程序员面试笔试宝典》)之求职的时候该不该只看钱?

所谓好公司:一是收入,二是环境,三是未来,还有就是无形的福利,比如:和你一起工作的同事都是素质高又专业的人,会让你在工作中更有愉悦感和成就感。 ——《杜拉拉之似水年华》 求职的时候&#x…