android基础---->传感器的使用
现在每部Android 手机里面都会内置有许多的传感器,它们能够监测到各种发生在手机上的物理事件,而我们只要灵活运用这些事件就可以编写出很多好玩的应用程序。今天我们开始简单的传感器使用的学习。
目录导航:
传感器的简要说明
一、 手机传感器的介绍:
- 手机中内置的传感器是一种微型的物理设备,它能够探测、感受到外界的信号,并按一定规律转换成我们所需要的信息
- Android 手机通常都会支持多种类型的传感器,如光照传感右器、加速度传感器、地磁传感器、压力传感器、温度传感器
- Android 系统只是负责将这些传感器所输出的信息传递给我们,至于具体如何去利用这些信息就要我们在程序中具体去利用这些得到的数据做处理了
二、 手机基本支持的传感器类型:
从Android1.5开始,系统内置了对多达八种传感器的支持,他们分别是:加速度传感器(accelerometer)、陀螺仪(gyroscope)、环境光照传感器(light)、磁力传感器(magnetic field)、方向传感器(orientation)、压力传感器(pressure)、距离传感器(proximity)和温度传感器(temperature)。
三、 传感器的一些使用说明
- Android所有的传感器都归传感器管理器 SensorManager 管理,获取传感器管理器的方法很简单:
String service_name = Context.SENSOR_SERVICE;
SensorManager sensorManager = (SensorManager)getSystemService(service_name);
- 从传感器管理器中获取其中某个或者某些传感器的方法有如下三种:
第一种:获取某种传感器的默认传感器:
Sensor defaultGyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
第二种:获取某种传感器的列表:
List<Sensor> pressureSensors = sensorManager.getSensorList(Sensor.TYPE_PRESSURE);
第三种:获取所有传感器的列表:
List<Sensor> allSensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
四、 对于一个传感器,信息的获取:
方法
|
描述
|
getMaximumRange()
|
最大取值范围
|
getName()
|
设备名称
|
getPower()
|
功率
|
getResolution()
|
精度
|
getType()
|
传感器类型
|
getVentor()
|
设备供应商
|
getVersion()
|
设备版本号 |
五、 现阶段Android支持的常用传感器有8种:
传感器类型常量
|
内部整数值
|
中文名称
|
Sensor.TYPE_ACCELEROMETER
|
1 |
加速度传感器
|
Sensor.TYPE_MAGNETIC_FIELD
|
2 |
磁力传感器
|
Sensor.TYPE_ORIENTATION
|
3 |
方向传感器
|
Sensor.TYPE_GYROSCOPE
|
4 |
陀螺仪传感器
|
Sensor.TYPE_LIGHT
|
5 |
环境光照传感器
|
Sensor.TYPE_PRESSURE
|
6 |
压力传感器
|
Sensor.TYPE_TEMPERATURE
|
7 |
温度传感器
|
Sensor.TYPE_PROXIMITY
|
8 | 距离传感器 |
传感器的实例
我们创建一个传感器的应用实例,项目结构如下:
aaarticlea/png;base64,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" alt="" />
一、 在MainActivity中初始化一些信息:
private final static String TAG = "SensorTest";
private TextView textView;
SensorManager sm = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);
sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
二、 得到手机上支持的所有传感器类型:创建一个方法
// 显示手机支持的传感器的清单
public void allSensors(View view) {
//从系统服务中获得传感器管理器
//从传感器管理器中获得全部的传感器列表
List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);
Log.i(TAG, "allsensors: " + allSensors.size()); //显示每个传感器的具体信息
for (Sensor sensor : allSensors) {
String name = sensor.getName();
String vendor = sensor.getVendor();
int version = sensor.getVersion();
Log.i(TAG, "name: " + name + ", vendor: " + vendor + ", version: " + version);
}
}
三、 光传感器的简单使用:
// 光照传感器的使用
public void lightSensors(View view) {
Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
sm.registerListener(LightListener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
} // 光照传感器的事件
private SensorEventListener LightListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float value = event.values[0];
Sensor sensor = event.sensor;
textView.setText(value + "");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
Log.i(TAG, "on accuracy change: " + accuracy);
}
};
四、 加速度传感器的简单使用:
// 加速度传感器
public void accelerSensors(View view) {
Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sm.registerListener(AcclerListener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
} // 加速度传感器的事件
private SensorEventListener AcclerListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// 加速度可能会是负值,所以要取它们的绝对值
float xValue = Math.abs(event.values[0]);
float yValue = Math.abs(event.values[1]);
float zValue = Math.abs(event.values[2]);
if (xValue > 15 || yValue > 15 || zValue > 15) {
// 认为用户摇动了手机,触发摇一摇逻辑
Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
Log.i(TAG, "on accuracy change: " + accuracy);
}
};
五、 在onDestory方法调用unregisterListener()方法来释放使用的资源。
@Override
protected void onDestroy() {
super.onDestroy();
if (sm != null) {
sm.unregisterListener(LightListener);
sm.unregisterListener(AcclerListener);
}
}
六、 显示结果:
- 所有传感器的打印日志:
allsensors: 27
name: Accelerometer, vendor: STMicroelectronics, version: 1
name: Magnetometer, vendor: AKM, version: 1
name: Magnetometer Uncalibrated, vendor: AKM, version: 1
name: Gyroscope, vendor: STMicroelectronics, version: 1
name: Gyroscope Uncalibrated, vendor: STMicroelectronics, version: 1
name: Proximity Sensor, vendor: TAOS, version: 1
name: Ambient Light Sensor, vendor: TAOS, version: 1
name: Barometer Sensor, vendor: BOSCH, version: 1
name: Temperature Sensor, vendor: BOSCH, version: 1
name: Gravity, vendor: Qualcomm, version: 1
name: Linear Acceleration, vendor: Qualcomm, version: 1
name: Rotation Vector, vendor: Qualcomm, version: 1
name: Step Detector, vendor: Qualcomm, version: 1
name: Step Counter, vendor: Qualcomm, version: 1
name: Significant Motion Detector, vendor: Qualcomm, version: 1
name: Game Rotation Vector, vendor: Qualcomm, version: 1
name: Geomagnetic Rotation Vector, vendor: Qualcomm, version: 1
name: Orientation, vendor: Qualcomm, version: 1
name: AMD, vendor: Qualcomm, version: 1
name: RMD, vendor: Qualcomm, version: 1
name: Basic Gestures, vendor: Qualcomm, version: 1
name: Facing, vendor: Qualcomm, version: 1
name: Tilt, vendor: Qualcomm, version: 1
name: Pedometer, vendor: Qualcomm, version: 1
name: PEDESTRIAN-ACTIVITY-MONITOR, vendor: Qualcomm, version: 1
name: Motion Accel, vendor: Qualcomm, version: 1
name: Temperature Sensor, vendor: BOSCH, version: 1
友情链接
- 测试用例的源代码下载 访问密码 5760
android基础---->传感器的使用的更多相关文章
- Android Developers:传感器概述
大 多数Android设备有内置的传感器,来测量运动,方向和各种环境条件.这些传感器能提供高精度和准确度的原始数据,如果你想监控设备三维运动或者位 置,或者你想监控设备周围的环境变化,是非常有用的.例 ...
- Android基础测试题(四)
看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...
- Android基础测试题(二)
今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...
- Mono.Android 基础
Mono.Android 基础 (地址) Mono.Android项目结构是 — Project + Assets + Resources + drawable + layout + values R ...
- 修复 XE8 for Android 方向传感器 headingX,Y,Z 不会动的问题
问题:XE8 for Android 方向传感器无法正常运作(在 XE7 是正常的) 测试:官方示例 Samples\Object Pascal\Mobile Snippets\Orientation ...
- 深入理解gradle编译-Android基础篇
深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- 基础4 Android基础
基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...
- Android基础总结(8)——服务
服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行哪些不需要和用户交互而且还要长期运行的任务.服务的运行不依赖任何用户界面,即使当程序被切换到后台,或者用户打开了 ...
随机推荐
- 特别的表格(overflow:hidden的一个小应用)
做多个li,对各个边的边框有不同的要求,三层盒子,第一层盒子放li,设置右边和下边的虚线边框,浮动,第二层盒子ul设置宽度使li排列,第三层盒子最大的盒子,使用overflow:hidden,宽度高度 ...
- Unity 绘制Mesh线条
using UnityEngine; using System.Collections; using System.Collections.Generic; public struct Segme ...
- Pytest权威教程14-缓存:使用跨执行状态
目录 缓存:使用跨执行状态 使用方法 首先只重新运行故障或故障 上次运行中没有测试失败时的行为 新的config.cache对象 检查缓存内容 清除缓存内容 逐步修复失败用例 unittest.Tes ...
- Educational Codeforces Round 64(ECR64)
Educational Codeforces Round 64 CodeForces 1156A 题意:1代表圆,2代表正三角形,3代表正方形.给一个只含1,2,3的数列a,ai+1内接在ai内,求总 ...
- jquery中语法初学必备
$(this).hide() - 隐藏当前元素 $("p").hide() - 隐藏所有段落 $(".test").hide() - 隐藏所有 class=&q ...
- SpaceClaim脚本功能(Beta功能)
本操作仅适用ANSYS SpaceClaim 2016 打开SpaceClaim脚本编辑器的方法有两种 方法一(看截图操作): 方法二(请见后面的实例操作). 创建球体源代码: #定义 ...
- OpenFOAM当中监测力和阻力系数
首先准备好我们自己的平常算例文件,本次我们以圆柱绕流的算例来说明用法 我们找到constant文件夹 打开其中的transportProperties文件 我们将其中的: nu ...
- js逆向笔记
1.nodejs运行js的时候 navigator如果找不到可以可设置为空对象 var navigator={}; 2.使用nodejs如果window对象找不到的时候 可以使用jsdom模块 3.顶 ...
- python 二维码
pip3 install Pillow pip3 install qrcode import qrcode text ="gisoracle我爱你呀" #input("输 ...
- OSG学习笔记0——解决OSG读obj模型问题[转]
原文:https://blog.csdn.net/u011310341/article/details/51179948 #include "stdafx.h" #include& ...