Android传感器的使用(GravieySensor)
这里以重力传感器为例说明
第一步:创建一个SensorManager对象,用来管理或者获取传感器
SensorManager sm = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
第二步:根据Sensor下枚举获得对应的传感器对象
Sensor sr = sm.getDefaultSensor(Sensor.TYPE_GRAVITY);
第三步,为该传感器注册一个事件,方法有很多种,可以让Activi继承SensorEventListener接口,或者直接使用内部类,推荐使用内部类:
sm.registerListener(new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}, sr, SensorManager.SENSOR_DELAY_NORMAL);
其中,第三个参数,SENSOR_DELAY_NORMAL表示传感器反应速度,这里SENSOR_DELAY_GAME,SENSOR_DELAY_FAST等。
第四步:SensorEvent对象中的values[]数组中保存了传感器具体数值,针对不同的传感器对象,values[]具有不同内容,长度也不一样。对于Gravity传感器,这里values有三个值,分别代表了其在x,y,z方向上的重力加速度,我们在xml文件中简单设置一下布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_gravity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.xdwang.myapplication.Gravity"
android:orientation="vertical"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/x"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/y"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/z"/>
</LinearLayout>
然后在onSensorChanged中对三个TXTVIEW设置值:
sm.registerListener(new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
txtx.setText("x方向的重力加速度为:" + event.values[0] + "g/ms2");
txty.setText("y方向的重力加速度为:" + event.values[1] + "g/ms2");
txtz.setText("z方向的重力加速度为:" + event.values[2] + "g/ms2");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}, sr, SensorManager.SENSOR_DELAY_NORMAL);
这样,我们就能实时得到重力传感器的数据了,具体怎么使用这些数据,就要看你的用处了。
最后附上全部代码:
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView; public class Gravity extends AppCompatActivity {
TextView txtx = null;
TextView txty = null;
TextView txtz = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gravity);
SensorManager sm = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
Sensor sr = sm.getDefaultSensor(Sensor.TYPE_GRAVITY);
txtx = (TextView) findViewById(R.id.x);
txty = (TextView) findViewById(R.id.y);
txtz = (TextView) findViewById(R.id.z);
sm.registerListener(new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
txtx.setText("x方向的重力加速度为:" + event.values[0] + "g/ms2");
txty.setText("y方向的重力加速度为:" + event.values[1] + "g/ms2");
txtz.setText("z方向的重力加速度为:" + event.values[2] + "g/ms2");
} @Override
public void onAccuracyChanged(Sensor sensor, int accuracy) { }
}, sr, SensorManager.SENSOR_DELAY_NORMAL);
}
}
Android传感器的使用(GravieySensor)的更多相关文章
- android 传感器应用
本章讲述Android开发中,传感器应用相关的知识点. 1.功能需求 做一个基于传感器的水平尺应用. 2.软件实现
- Android 传感器
今天介绍一下Android的传感器,开发Android传感器的步骤: 1.调用Context的getSystemService(Context.SENSOR_SERVICE)方法获取SensorMan ...
- 《IT蓝豹》吹雪花demo,学习android传感器
吹雪花demo,学习android传感器 吹雪花demo,学习android传感器,嘴巴对着手机底部吹一下就会出现飘着雪花效果. 算是学习android传感器效果.本例子主要是通过android.me ...
- 《android传感器高级编程》译者序
翻看手机中的应用,就能发现大多数应用都已经使用了传感器.让微信彻底火起来的“附近的人”和“摇一摇”.碰一碰交换信息的Bump.各种运动记录app.神奇的“磁力探测仪”.火爆的游戏Temple Run… ...
- Android传感器
Android传感器 开发传感器应用 1. 获取传感器管理者对象 // 获取传感器管理者对象 SensorManager mSensorManager = (SensorManager) getSys ...
- 《Android传感器高级编程》
<Android传感器高级编程> 基本信息 原书名:Professional Android Sensor Programming 原出版社: Wrox 作者: (美)米内特(Greg M ...
- android传感器使用
android传感器的使用以加速度传感器.方向传感器.磁场.压力.温度.光感.特别的距离传感器为例介绍. 首先所在的类需要implement SensorEventListener.使用传感器分为以下 ...
- Android传感器编程带实例
看了程序人生 网站的 编程高手的编程感悟 深有感触,好像也是一个android 程序员写的,推荐大家也看看.话不多说,还是言归正传吧. 一.前言 我很喜欢电脑,可是笔记本还是太大,笔记本电脑再小还是要 ...
- Android传感器概述(六)
监视传感器事件 要监视原始的传感器数据,你须要实现两个通过SensorEventListener接口暴露的回调方法:onAccuracyChanged()和onSensorChanged().Andr ...
随机推荐
- linux下svn客户端报错Cannot negotiate authentication mechanism的解决方法
svn客户端报错Cannot negotiate authentication mechanism的解决方法: 问题出现的原因之一: 因为SVN服务器配置了saslauthd服务用来实现与ldap的对 ...
- Trigger model Trigger expr_id in WorkFolow
For example, suppose you want to set a Sale Order into the state "Done" once it has been s ...
- android 开源项目学习
1.Android团队提供的示例项目 如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Android这个框架上开发.由Android的核心开发团队提供了15个优 ...
- linux常用命令(4)rm命令
rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf).所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西 ...
- Unity3D Quaternion各属性和函数测试
Quaternion属性与方法 一,属性: x.y.z就不说了,只看一个eulerAngles,代码如下: public Quaternion rotation = Quaternion.identi ...
- check sql server edition (version 版本)
SELECT @@VERSION refer : https://www.mssqltips.com/sqlservertip/1140/how-to-tell-what-sql-server-ver ...
- codeforces D. Long Path
http://codeforces.com/contest/408/problem/D 题意:有一排房间每个房间有两扇门,一扇通往第i+1个房间,另一扇通往第p[i]个房间,(p[i]<=i)然 ...
- C#程序设计基础——运算符与表达式
运算符就是完成操作的一系列符号,它主要包括算术运算符.赋值运算符.关系运算符.逻辑运算符.条件运算.位操作运算符和字符串运算符. 表达式就是运算符和操作数的组合,如a*b+1-c.表达式主要包括算术表 ...
- C++不能中断构造函数来拒绝产生对象(在构造和析构中抛出异常)
这是我的感觉,具体需要研究一下- 找到一篇文章:在构造和析构中抛出异常 测试验证在类构造和析构中抛出异常, 是否会调用该类析构. 如果在一个类成员函数中抛异常, 可以进入该类的析构函数. /// @f ...
- 整整68页学习C++的文章
有空看看,有不少好东西: http://dev.21tx.com/language/c/index.shtml