您的位置:首页 > 移动开发 > Android开发

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