android手机加速度传感器
2015-11-01 22:31
489 查看
先说以下关于Android的传感器的。关于Android传感器
Android的传感器共有13种(百度说的。。。我也不懂是哪十三种),比较普片的有:
Sensor.TYPE_ACCELEROMETER:加速度传感器
Sensor.TYPE_GYROSCOPE:陀螺仪传感器
Sensor.TYPE_LIGHT:亮度传感器
Sensor.TYPE_MAGNETIC_FIELD:地磁传感器
Sensor.TYPE_ORIENTATION:方向传感器
Sensor.TYPE_PRESSURE:压力传感器
Sensor.TYPE_PROXIMITY:近程传感器
Sensor.TYPE_TEMPERATURE:温度传感器
我们要说的是其中比较普遍的加速度传感器,Android中的加速度传感器有三个方向,分别是x,y,z,对空间的三维,可能态抽象了,上图吧:
看完这图,应该,,至少懂了百分之十吧,然后就先讲解下代码下怎么获得加速度
1.1首先,要定义一个sensormanager,顾名思义,这是对Android传感器的管理,可以简单的理解为他是一个管家,管理者一所房子,并且拥有着各个传感器的门派号
所以,首先要取得他的同意(取得服务),然后再定义一个sensor,相当于房间号(取得传感器的类型),然后就去注册。。。。。。。当然那,实际上不是这样的,这是欧文的胡诌,所以还是个上代码吧
import java.util.List;
//对加速度传感器的补充
//0.1首先申明一个服务:sensormanager
//0.2申明一个类型:sensor
//0.3注册
//1.1注销
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity{
SensorManager sensormanager;
Sensor sensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensormanager=(SensorManager) getSystemService(Context.SENSOR_SERVICE);//获得服务
Sensor sensor=sensormanager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//类型
//注册
sensormanager.registerListener(new sensorlistener(), sensor,SensorManager.SENSOR_DELAY_NORMAL);//注意,是三个参数的
//关于第三个参数的区别,共有四个类别,是在于时间,详情查询api
}
@Override
protected void onDestroy() {
super.onDestroy();
sensormanager.unregisterListener(new sensorlistener());
}
//监听事件
class sensorlistener implements 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, xValue+"",
Toast.LENGTH_SHORT).show();}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
}
千言万语,不如一段代码,如果有时间再写一篇关于sensormanager的博客,各位看官,晚安
Android的传感器共有13种(百度说的。。。我也不懂是哪十三种),比较普片的有:
Sensor.TYPE_ACCELEROMETER:加速度传感器
Sensor.TYPE_GYROSCOPE:陀螺仪传感器
Sensor.TYPE_LIGHT:亮度传感器
Sensor.TYPE_MAGNETIC_FIELD:地磁传感器
Sensor.TYPE_ORIENTATION:方向传感器
Sensor.TYPE_PRESSURE:压力传感器
Sensor.TYPE_PROXIMITY:近程传感器
Sensor.TYPE_TEMPERATURE:温度传感器
我们要说的是其中比较普遍的加速度传感器,Android中的加速度传感器有三个方向,分别是x,y,z,对空间的三维,可能态抽象了,上图吧:
看完这图,应该,,至少懂了百分之十吧,然后就先讲解下代码下怎么获得加速度
1.1首先,要定义一个sensormanager,顾名思义,这是对Android传感器的管理,可以简单的理解为他是一个管家,管理者一所房子,并且拥有着各个传感器的门派号
所以,首先要取得他的同意(取得服务),然后再定义一个sensor,相当于房间号(取得传感器的类型),然后就去注册。。。。。。。当然那,实际上不是这样的,这是欧文的胡诌,所以还是个上代码吧
import java.util.List;
//对加速度传感器的补充
//0.1首先申明一个服务:sensormanager
//0.2申明一个类型:sensor
//0.3注册
//1.1注销
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity{
SensorManager sensormanager;
Sensor sensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensormanager=(SensorManager) getSystemService(Context.SENSOR_SERVICE);//获得服务
Sensor sensor=sensormanager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//类型
//注册
sensormanager.registerListener(new sensorlistener(), sensor,SensorManager.SENSOR_DELAY_NORMAL);//注意,是三个参数的
//关于第三个参数的区别,共有四个类别,是在于时间,详情查询api
}
@Override
protected void onDestroy() {
super.onDestroy();
sensormanager.unregisterListener(new sensorlistener());
}
//监听事件
class sensorlistener implements 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, xValue+"",
Toast.LENGTH_SHORT).show();}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
}
千言万语,不如一段代码,如果有时间再写一篇关于sensormanager的博客,各位看官,晚安
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories