zoukankan      html  css  js  c++  java
  • Android 传感器

      今天介绍一下Android的传感器,开发Android传感器的步骤:

    1、调用Context的getSystemService(Context.SENSOR_SERVICE)方法获取SensorManager对象,SensorManager对象代表系统的传感器管理服务。

    2、调用SensorManager的getDefaultSensor(int type)方法来获取指定类型的传感器。

    3、一般在Activity的onResume()方法中调用SensorManager的registerListener()为指定传感器注册监听器即可。程序通过监听器获取传感器传回来的数据。

      SensorManager提供注册传感器的方法为:registerListener(SensorEventListener listener, Sensor sensor, int rate),该方法中三个参数:

    listener:监听器传感器的监听器,该监听器需要实现SensorEventListener接口。

    sensor:传感器对象。

    rate:指定获取传感器数据的频率。

    该方法中rate有几个频率值:

    SensorManager.SENSOR_DELAY_FASTEST:最快,延迟最小,电量消耗大。

    SensorManager.SENSOR_DELAY_GAME:适合游戏的频率。

    SensorManager.SENSOR_DELAY_NORMAL:正常频率。

    SensorManager.SENSOR_DELAY_UI:适合普通用户界面的频率,省电、系统开销小,延迟大。

      下面直接上一个加速度传感器的代码:

     1 public class AccelerometerTest extends Activity
     2     implements SensorEventListener
     3 {
     4     // 定义系统的Sensor管理器
     5     SensorManager sensorManager;
     6     EditText etTxt1;
     7 
     8     @Override
     9     public void onCreate(Bundle savedInstanceState)
    10     {
    11         super.onCreate(savedInstanceState);
    12         setContentView(R.layout.main);
    13         // 获取程序界面上的文本框组件
    14         etTxt1 = (EditText) findViewById(R.id.txt1);
    15         // 获取系统的传感器管理服务
    16         sensorManager = (SensorManager) getSystemService(
    17             Context.SENSOR_SERVICE);
    18     }
    19 
    20     @Override
    21     protected void onResume()
    22     {
    23         super.onResume();
    24         // 为系统的加速度传感器注册监听器
    25         sensorManager.registerListener(this,
    26             sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
    27             SensorManager.SENSOR_DELAY_GAME);
    28     }
    29 
    30     @Override
    31     protected void onStop()
    32     {
    33         // 取消注册
    34         sensorManager.unregisterListener(this);
    35         super.onStop();
    36     }
    37 
    38     // 以下是实现SensorEventListener接口必须实现的方法
    39     // 当传感器的值发生改变时回调该方法
    40     @Override
    41     public void onSensorChanged(SensorEvent event)
    42     {
    43         float[] values = event.values;
    44         StringBuilder sb = new StringBuilder();
    45         sb.append("X方向上的加速度:");
    46         sb.append(values[0]);
    47         sb.append("
    Y方向上的加速度:");
    48         sb.append(values[1]);
    49         sb.append("
    Z方向上的加速度:");
    50         sb.append(values[2]);
    51         etTxt1.setText(sb.toString());
    52     }
    53 
    54     // 当传感器精度改变时回调该方法。
    55     @Override
    56     public void onAccuracyChanged(Sensor sensor, int accuracy)
    57     {
    58     }
    59 }
  • 相关阅读:
    centos中文乱码修改字符编码使用centos支持中文
    java知识总结-26
    java知识总结-25
    java知识总结-24
    java知识总结-23
    java知识总结-22
    java知识总结-21
    java知识总结-20
    java知识总结-19
    java知识总结-18
  • 原文地址:https://www.cnblogs.com/phj981805903/p/3320263.html
Copyright © 2011-2022 走看看