Android传感器有以下几种:
加速度传感器(accelerometer)
陀螺仪传感器(gyroscope)
环境光照传感器(light)
磁力传感器(magnetic field)
方向传感器(orientation)
压力传感器(pressure)
距离传感器(proximity)
温度传感器(temperature)
使用方法大体类似,都是先获取SensorMannager,然后实现SensorEventListener接口,再注册SensorEventListener,接口中有Senser获取到的数据的回调。
以下实现一个加速度传感器(accelerometer)的使用方法。

1 Activity中代码


public class MainActivity extends AppCompatActivity {private Sensor graveSensor;private SensorManager sensorManager;private ViewDataBinding viewDataBinding;private MainViewModel mainViewModel;//保存 x y z 的坐标float bx = 0;  float by = 0;  float bz = 0;long bTime = 0;//这一次的时间@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);viewDataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);mainViewModel = new MainViewModel();viewDataBinding.setVariable(com.senser.BR.model, mainViewModel);//1获取SensorMannagersensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);if (sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) != null) {List<Sensor> graveSensors = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);graveSensor = graveSensors.get(0);}}//2实现SensorEventListener接口private SensorEventListener listener = new SensorEventListener() {@Overridepublic void onSensorChanged(SensorEvent sensorEvent) {//S4enser获取到的数据float x = sensorEvent.values[0];float y = sensorEvent.values[1];float z = sensorEvent.values[2];long time=System.currentTimeMillis()-bTime;float speadX = (x - bx) / ( time);//X轴的速度float speadY = (y - by) / (time);  //y轴的速度float speadZ = (z - bz) / (time);   //z轴的速度mainViewModel.setX(speadX);mainViewModel.setY(speadY);mainViewModel.setZ(speadZ);bx = x; by = y; bz = z;bTime = System.currentTimeMillis();}@Overridepublic void onAccuracyChanged(Sensor sensor, int i) {}};@Overrideprotected void onResume() {super.onResume();//注册SensorEventListenersensorManager.registerListener(listener, graveSensor, SensorManager.SENSOR_DELAY_NORMAL);}@Overrideprotected void onDestroy() {super.onDestroy();sensorManager.unregisterListener(listener);}
}

2 viewModel中代码


import android.databinding.BaseObservable;
import android.databinding.Bindable;
import com.senser.BR;/*** Created by c9736 on 2017/7/10.*/public class MainViewModel extends BaseObservable {private float x, y, z;@Bindablepublic String getX() {return "x="+x;}public void setX(float x) {this.x = x;notifyPropertyChanged(BR.x);}@Bindablepublic String getY() {return "y="+y;}public void setY(float y) {this.y = y;notifyPropertyChanged(BR.y);}@Bindablepublic String getZ() {return "z="+z;}public void setZ(float z) {this.z = z;notifyPropertyChanged(BR.z);}
}

3布局文件

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><data><variable
            name="model"type="com.senser.MainViewModel" /></data><LinearLayout
        android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.senser.MainActivity"><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{model.x}" /><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{model.y}" /><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{model.z}" /></LinearLayout>
</layout>

Android Senser 使用方式相关推荐

  1. android上传本地图片到服务器上,Android使用post方式上传图片到服务器的方法

    本文实例讲述了Android使用post方式上传图片到服务器的方法.分享给大家供大家参考,具体如下: /** * 上传文件到服务器类 * * @author tom */ public class U ...

  2. android cpu调度策略_「性能优化3.0」Android线程调度异步方式汇总

    线程调度与线程调度模型 任意时刻,只有一个线程占用 CPU,处于运行状态.而多线程并发执行就是轮流获取 CPU 执行权. 分时调用模型 轮流获取 CPU 执行权,均分 CPU 执行时间. 抢占式调度模 ...

  3. Android中BindService方式使用的理解

    Android中BindService方式使用的理解 - 唯一小神 - 博客园 最近学习了一下Android里面的Service的应用,在BindService部分小卡了一下,主要是开始没有彻底理解为 ...

  4. android用上传图片到服务器上,Android使用post方式上传图片到服务器的方法

    本文实例讲述了Android使用post方式上传图片到服务器的方法.分享给大家供大家参考,具体如下: /** * 上传文件到服务器类 * * @author tom */ public class U ...

  5. android源代码下载AE 文字样式,阅读Android framework源代码方式

    阅读Android framework源代码方式 点击标题下「蓝色微信名」可快速关注 阅读源代码的方式有很多,这里只讲其中的两种方式. 一.AndroidXRef(强烈推荐) 这种方式速度快,操作简单 ...

  6. android intent拍照,Android通过Intent方式调用相机拍照取得图片

    Android通过Intent方式调用相机拍照取得图片 AndroidManifest.XML 权限设置: XML布局设置: 代码: public classMainActivityextendsAp ...

  7. android圆形点击效果,Android 三种方式实现自定义圆形页面加载中效果的进度条

    [实例简介] Android 三种方式实现自定义圆形页面加载中效果的进度条 [实例截图] [核心代码] ad376a86-a9aa-49bc-8cea-321bcff2c0c3 └── AnimRou ...

  8. Android 多线程实现方式

    该原创文章首发于微信公众号"字节流动" Android 多线程实现方式 通常来说,一个应用至少有一个进程,而一个进程至少有一个线程. 线程是 CPU 调度的基本单位,进程是系统资源 ...

  9. Android中静态方式破解某App实现所有视频app去除广告功能

    转:  Android中静态方式破解某App实现所有视频app去除广告功能 作为一个屌丝程序猿也有追剧的时候,但是当打开视频app的时候,那些超长的广告已经让我这个屌丝无法忍受了,作为一个程序猿看视频 ...

最新文章

  1. 2018 ACM-ICPC亚洲区域赛 北京赛区
  2. 360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”
  3. php注册树模式,PHP设计模式之详记注册树模式
  4. 图书配套光盘、部分软件下载
  5. 阿里云linux主机更新hostname
  6. 【数据分享】全国357个城市历年空气质量数据(2013-2021)
  7. 【图像重建】基于matlab GUI投影法图像重建【含Matlab源码 861期】
  8. lib、dll文件的中函数的查看与lib、dll、pdb文件的介绍
  9. vc6.0编译c++程序后在vc2008中调试的技巧(符号信息和链接)
  10. 使用Fragstats对栅格数据进行分析
  11. vue 基于 Ant Design 实现表格序号
  12. Unity小游戏教程系列 | 创建小型太空射击游戏(三)
  13. Android Studio启动海马玩模拟器
  14. 贪婪洞窟2如何修改服务器,贪婪洞窟2改造系统详解-改造系统概率分析
  15. 怎么学习Android
  16. 一步一步学习之安装与配置 CakePHP (一)
  17. wifi连接速率 linux,Deepin linux 操作系统提高 WiFi 速度
  18. [力扣c++实现] 221. 最大正方形
  19. 关于vue+elementui设置div背景图片填充不生效问题
  20. hdu2767(强连通分量)一个图最少添加几条边能使得该图强连通?

热门文章

  1. swing程序 过时拉嘛_密码已过时-如何保护您的应用程序和保护用户
  2. 解决flask开发smtplib.SMTPSenderRefused: (503, b‘Error: need EHLO and AUTH first !‘, ‘******@qq.com‘)问题
  3. java ssm oa_基于SSM的OA系统
  4. 仁盟养老集团,力推老年智能技术落地工作
  5. [HBNIS2018]excel破解——buuctf
  6. java调用包中的类_java调用另一个包中的类的方法
  7. Mac 外接触控板每三秒鼠标卡顿一下解决方案
  8. Google Play 服务提示更新、Google play 闪退等问题
  9. 计组 --存储系统(三)
  10. Excel快速下拉多行函数式、快速选中多行数据