通常手机自带的距离传感器只能检测到几厘米的范围,一般用于判断手机在不在口袋中

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.Log;public class ProximitySensor implements SensorEventListener {private static final String TAG = "ProximitySensor";private static ProximitySensor instance;private SensorManager mSensorManager;private float distance = -1;private boolean mHasStarted = false;private ProximitySensor() {}public static ProximitySensor getInstance() {if (instance == null) {instance = new ProximitySensor();}return instance;}/*** 启动距离传感器*/public static void start(Context context) {ProximitySensor.getInstance().registerListener(context);}/*** 停止距离传感器*/public static void stop() {ProximitySensor.getInstance().unregisterListener();}/*** 获取手机距离(单位厘米)*/public static float getDistance() {return ProximitySensor.getInstance().getValue();}// ------------------------------------------------------------------------------/*** Use this method to start listening of the sensor*/private void registerListener(Context context) {if (mHasStarted) {return;}mHasStarted = true;mSensorManager = (SensorManager) context.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);Sensor proximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); // 获取距离传感器if (proximitySensor != null) { // 距离传感器存在时才执行mSensorManager.registerListener(this, proximitySensor, SensorManager.SENSOR_DELAY_NORMAL); // 注册事件监听}}/*** Use this method to stop listening of the sensor*/private void unregisterListener() {if (!mHasStarted || mSensorManager == null) {return;}mHasStarted = false;mSensorManager.unregisterListener(this);}private float getValue() {if (!mHasStarted) {Log.w(TAG, "proximity sensor has not start!");}return distance;}@Overridepublic void onSensorChanged(SensorEvent event) {if (event != null && event.sensor.getType() == Sensor.TYPE_PROXIMITY) {// values[0]: Proximity sensor distance measured in centimetersdistance = event.values[0];Log.v(TAG, "proximity sensor distance: " + distance);}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}}

Android判断手机是否在口袋中,距离传感器相关推荐

  1. android 判断手机计步_一种在Android手机上实现计步器的方法

    一种在Android手机上实现计步器的方法 [技术领域] [0001] 本发明设及一种在Amlroid手机上实现计步器的方法,特别设及对手机加速度传 感器数据的采集.处理及应用技术,属于传感器应用领域 ...

  2. android 判断手机为小米

    之前,自己写了获取相册图片的代码,在自己手机上测试没有问题,不过小米手机却出现问题.在网上搜索资料,发现小米手机与其他德 处理不同.所以今天写一下判断手机系统的内容.其实很简单. public sta ...

  3. android+判断小米手机,android 判断手机为小米

    释放双眼,带上耳机,听听看~! 之前,自己写了获取相册图片的代码,在自己手机上测试没有问题,不过小米手机却出现问题.在网上搜索资料,发现小米手机与其他德 处理不同.所以今天写一下判断手机系统的内容.其 ...

  4. RomUtil【Android判断手机ROM,用于判断手机机型】

    参考资料 Android判断手机ROM 正文 有时候需要判断手机系统的ROM,检测ROM是MIUI.EMUI还是Flyme,可以使用getprop命令,去系统build.prop文件查找是否有对应属性 ...

  5. android 判断miui版本,Android判断手机是否是小米MIUI系统的方法

    易采站长站为您分析Android判断手机是否是小米MIUI系统的方法的相关资料,需要的朋友可以参考下 废话不多说了,直接给大家贴代码了: 具体代码如下所示: public class MIUIUtil ...

  6. android判断软件是否已root权限,Android应用开发Android 判断手机是否有root权限方法...

    本文将带你了解Android应用开发Android 判断手机是否有root权限方法,希望本文对大家学Android有所帮助. root权限是安卓最高的操作权限,俗称superuser,简称su,一般来 ...

  7. Android 判断手机是32位CPU还是64位CPU android.os.Build类字段含义

    手机cpu分32位与64位,下面介绍如何在所有android版本上判断手机cpu位数是32位还是64位. 1 Android 判断手机是32位CPU还是64位CPU Android从API level ...

  8. android 判断手机是否是国内的手机的方法

    转载:android 判断手机是否是国内的手机的方法(getSimCountryIso和getSimOperator) http://blog.csdn.net/mingli198611/articl ...

  9. android 判断手机是否有物理menu键

    android 判断手机是否有物理menu键 ViewConfiguration.get(getContext()).hasPermanentMenuKey();

  10. Android判断手机ROM

    该方式并不能使用,已经废弃 本篇文章是转自以下链接: https://www.jianshu.com/p/ba9347a5a05a 附加Android build.prop简介: https://ww ...

最新文章

  1. Git相关二三事(git reflog 和彩色branch)【转】
  2. Core Data 编程指南
  3. iphone换机数据迁移_苹果手机换华为、小米怎么同步数据?来了!
  4. hiti打印机android驱动,HiTi 打印机 驱动程序下载——更新 HiTi 软件
  5. Golang 特性简介
  6. 视频PPT互动问答丨数据库技术前沿的创新与实践专题
  7. Android保存用户名和密码
  8. 浅谈CIVIL 3D
  9. js中apply、call和bind的区别
  10. 【速达软件】【速达5000】需求采购订单数量不能大于(请购数量-已订数量)
  11. 使用prometheus+grafana监控k8s集群
  12. 【高数】如何由解倒求微分方程?及微分方程的阶数、任意常数、特征根的关系
  13. 联邦学习:加密算法Paillier,Affine,IterativeAffine
  14. Couldn't connect to host, port: localhost, 25; timeout -1;
  15. 微信小程序,画布中,根据需要展示的图片比例,获取能截取原图中的最大图片尺寸,并且不变形展示
  16. 【那些年做过的设计 · 纪念贴】UI设计中移动端和PC端之间具体有什么区别
  17. Gillette!Gillette!
  18. 让Linux支持手机,让linux支持qq手机音乐播放
  19. OSChina 周六乱弹 ——抗议破坏教学道具,致其严重变形!
  20. TRS复合矩阵的拆解

热门文章

  1. 财务人的编程自学之路
  2. VSCode Remote 报错,无法连接??别慌,小二来了!
  3. 2017.3CCCC团体程序设计天梯赛初赛总结
  4. 云计算--VMware私有云平台搭建
  5. WINDOWS 7 X64专业版SP1后续补丁包20150901(微软官方下载地址列表)
  6. Python爬取QQ空间日志及说说
  7. java使用HttpURLConnection检索网站时403错误处理方式
  8. LSF集群基本概念介绍
  9. 浏览器标准模式和怪异模式之间的区别是什么
  10. [iOS]寻找superView