现在每部Android 手机里面都会内置有许多的传感器,它们能够监测到各种发生在手机上的物理事件,而我们只要灵活运用这些事件就可以编写出很多好玩的应用程序。今天我们开始简单的传感器使用的学习。

目录导航:

  1. 传感器的简要说明
  2. 传感器的实例
  3. 友情链接

传感器的简要说明

一、 手机传感器的介绍:

  • 手机中内置的传感器是一种微型的物理设备,它能够探测、感受到外界的信号,并按一定规律转换成我们所需要的信息
  • 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

友情链接

android基础---->传感器的使用的更多相关文章

  1. Android Developers:传感器概述

    大 多数Android设备有内置的传感器,来测量运动,方向和各种环境条件.这些传感器能提供高精度和准确度的原始数据,如果你想监控设备三维运动或者位 置,或者你想监控设备周围的环境变化,是非常有用的.例 ...

  2. Android基础测试题(四)

    看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...

  3. Android基础测试题(二)

    今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...

  4. Mono.Android 基础

    Mono.Android 基础 (地址) Mono.Android项目结构是 — Project + Assets + Resources + drawable + layout + values R ...

  5. 修复 XE8 for Android 方向传感器 headingX,Y,Z 不会动的问题

    问题:XE8 for Android 方向传感器无法正常运作(在 XE7 是正常的) 测试:官方示例 Samples\Object Pascal\Mobile Snippets\Orientation ...

  6. 深入理解gradle编译-Android基础篇

    深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...

  7. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  8. 基础4 Android基础

    基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...

  9. Android基础总结(8)——服务

    服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行哪些不需要和用户交互而且还要长期运行的任务.服务的运行不依赖任何用户界面,即使当程序被切换到后台,或者用户打开了 ...

随机推荐

  1. PHP利用执行操作符;模拟shell命令

    $out = `ls -la`; echo '<pre>'.$out.'</pre>'; 输出结果: total 10 drwxrwxrwx 1 root root 4096 ...

  2. codevs 4014EZ系列

    4014 EZ系列之丁畅大大打小怪兽   题目描述 Description 丁畅大大除了喜欢吃鸡腿和番茄炒鸡蛋,还喜欢变成奥特曼去打小怪兽. 有一天,他遇到了迪迦!!!!!!!!!!!!!!!!!!! ...

  3. 正则及re模块-基础(一)

    正则表达式 一说规则我已经知道你很晕了,现在就让我们先来看一些实际的应用.在线测试工具 http://tool.chinaz.com/regex/   http://tool.oschina.net/ ...

  4. 【一起来烧脑】底层HTTP深入笔记

    [外链图片转存失败(img-0GQ8QDNb-1563568792102)(https://upload-images.jianshu.io/upload_images/11158618-5bc7a2 ...

  5. 线程池(6)-submit与execute区别

    在线程池里提交任务经常见到submit与execute,如何选择,傻傻分不清楚.那么他们俩有什么区别,使用场景是什么?这篇博客将会介绍. 1.方法定义 void execute(Runnable co ...

  6. mitmproxy进行拦截

    import requests from selenium import webdriver from lxml import etree import time class DiffSpider: ...

  7. Simplifying Failures

    # # Finish the delta debug function ddmin # import re def test(s): print s, len(s),repr(s) if re.sea ...

  8. mysql查看数据库表数量

    1.查看数据库表数量SELECT count(TABLE_NAME) FROM information_schema.TABLES WHERE TABLE_SCHEMA='dbname'; selec ...

  9. 如何提高工具开发和数据分析的效率?| jupyter | Rstudio server

    这部分是超级干货,也能直接体现一个开发分析者的能力. 主要分为两部分: 1. 面对新问题时,如何高效的分析和开发? 2. 面对相似的问题时,如何最快时间的利用之前的开发经验? 因为现在我主要用shel ...

  10. Linux下java进程CPU占用率高分析方法(二)

    1. 通过 top 命令查看当前系统CPU使用情况,定位CPU使用率超过100%的进程ID:2. 通过 ps aux | grep PID 命令进一步确定具体的线程信息:3. 通过 ps -mp pi ...