Android-Position Sensors

来源:互联网 发布:网络歌手音频资料 编辑:程序博客网 时间:2024/05/13 09:47

The Android platform provides two sensors that let you determine the position of a device: the geomagnetic field sensor and the orientation sensor.

Note: The orientation sensor was deprecated in Android 2.2 (API Level 8).

》Using the Game Rotation Vector Sensor

The following code shows you how to get an instance of the default game rotation vector sensor:

private SensorManager mSensorManager;private Sensor mSensor;...mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GAME_ROTATION_VECTOR);
Using the Geomagnetic Rotation Vector Sensor

The following code shows you how to get an instance of the default geomagnetic rotation vector sensor:

private SensorManager mSensorManager;private Sensor mSensor;...mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR);
Using the Orientation Sensor

The orientation sensor lets you monitor the position of a device relative to the earth's frame of reference (specifically, magnetic north). The following code shows you how to get an instance of the default orientation sensor:

private SensorManager mSensorManager;private Sensor mSensor;...mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

The following code sample shows how to acquire orientation data directly from the orientation sensor. We recommend that you do this only if a device has negligible roll.

public class SensorActivity extends Activity implements SensorEventListener {  private SensorManager mSensorManager;  private Sensor mOrientation;  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);    mOrientation = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);  }  @Override  public void onAccuracyChanged(Sensor sensor, int accuracy) {    // Do something here if sensor accuracy changes.    // You must implement this callback in your code.  }  @Override  protected void onResume() {    super.onResume();    mSensorManager.registerListener(this, mOrientation, SensorManager.SENSOR_DELAY_NORMAL);  }  @Override  protected void onPause() {    super.onPause();    mSensorManager.unregisterListener(this);  }  @Override  public void onSensorChanged(SensorEvent event) {    float azimuth_angle = event.values[0];    float pitch_angle = event.values[1];    float roll_angle = event.values[2];    // Do something with these orientation angles.  }}

Using the Geomagnetic Field Sensor


The geomagnetic field sensor lets you monitor changes in the earth's magnetic field. The following code shows you how to get an instance of the default geomagnetic field sensor:

private SensorManager mSensorManager;private Sensor mSensor;...mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

Using the Uncalibrated Magnetometer

private SensorManager mSensorManager;private Sensor mSensor;...mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED);
Using the Proximity Sensor

The proximity sensor lets you determine how far away an object is from a device. The following code shows you how to get an instance of the default proximity sensor:

private SensorManager mSensorManager;private Sensor mSensor;...mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

public class SensorActivity extends Activity implements SensorEventListener {  private SensorManager mSensorManager;  private Sensor mProximity;  @Override  public final void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    // Get an instance of the sensor service, and use that to get an instance of    // a particular sensor.    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);    mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);  }  @Override  public final void onAccuracyChanged(Sensor sensor, int accuracy) {    // Do something here if sensor accuracy changes.  }  @Override  public final void onSensorChanged(SensorEvent event) {    float distance = event.values[0];    // Do something with this sensor data.  }  @Override  protected void onResume() {    // Register a listener for the sensor.    super.onResume();    mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);  }  @Override  protected void onPause() {    // Be sure to unregister the sensor when the activity pauses.    super.onPause();    mSensorManager.unregisterListener(this);  }}

Note: Some proximity sensors return binary values that represent "near" or "far." In this case, the sensor usually reports its maximum range value in the far state and a lesser value in the near state. Typically, the far value is a value > 5 cm, but this can vary from sensor to sensor. You can determine a sensor's maximum range by using the getMaximumRange() method.

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 水培红掌叶子发黄怎么办 盆竹的叶尖发黄怎么办 养富贵竹水里怎么生小虫怎么办 盆栽金银花叶子全部落掉怎么办 荷花竹根部烂了怎么办 水培绿萝叶子发黄怎么办 大早上的公鸡老打鸣怎么办 紫吊兰叶子变绿怎么办 芙桑花叶子发黄怎么办 长春花长得太高怎么办 四季梅叶子蔫了怎么办 吸财树叶子蔫了怎么办 民族团结手抄报间单有漂亮怎么办 鹦鹉尾巴毛掉了怎么办 羊绒衫领子打太大了怎么办 内裤洗了还有一股味道怎么办 月经下不来内裤上总有脏东西怎么办 夏天外衣薄露出内衣怎么办 金毛体味很重怎么办 直筒连衣裙太短怎么办 托班社会下雨了怎么办 托班下雨了怎么办教案 吃鸡界面有鼠标怎么办 老年机成英语了怎么办 手机成了英语了怎么办 塑料袋融化粘到衣服上怎么办 厕所被卫生纸堵了怎么办 钻石画的胶不粘了怎么办 客厅沙发选大了怎么办 连衣裙腰大了怎么办呀 憋尿后出现尿急尿涨怎么办 脚有酸酸的味道怎么办 三星手机home键失灵怎么办 三星s6返回键失灵怎么办 三星s7屏幕漏液怎么办 三星s8出现蓝框怎么办 三星手机短信图标没了怎么办 ps没有足够的ram怎么办 ps性能调不了是怎么办 苹果6p照相模糊怎么办 相框玻璃碎了怎么办