首页 > 编程知识 正文

手机的加速度传感器,手机加速度传感器测试方法

时间:2023-05-03 14:26:20 阅读:252581 作者:3798

先说以下关于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首先zxdj一个服务:sensormanager
//0.2zxdj一个类型: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的博客,各位看官,晚安


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。