我正在使用onSensorChanged()。我应该在<uses-feature>中指定什么?</uses-feature>

时间:2010-12-01 03:58:00

标签: android filtering accelerometer android-manifest google-play

我在这里检查了文档: http://developer.android.com/guide/topics/manifest/uses-feature-element.html

并找到了2个最相关的功能:

1)android.hardware.sensor.accelerometer

2)android.hardware.sensor.compass

我需要在清单中指定哪一个?或两者兼而有之?

是的,我确定我正在使用加速度计。但加速度计和磁场值也用于计算“方向”(这也意味着我正在使用android.hardware.sensor.compass ??)

这是我的代码:

@Override
 public void onSensorChanged(SensorEvent event) {
  int type = event.sensor.getType();

  switch (type) {
  case Sensor.TYPE_MAGNETIC_FIELD:
   mags = event.values.clone();
   break;
               //I'm using Accelerometer here
  case Sensor.TYPE_ACCELEROMETER:
   accels = event.values.clone();
                        break;
}
                    SensorManager.getRotationMatrix(rotationMat, I, accels, mags);
   SensorManager.getOrientation(rotationMat, calculatedOrients);

               //I also get direction here,  So do I need to specify android.hardware.sensor.compass in <uses-feature> ?
   azimuth = (float) Math.toDegrees(calculatedOrients[0]);
   pitch = (float) Math.toDegrees(calculatedOrients[1]);
   roll = -(float) Math.toDegrees(calculatedOrients[2]);
}

提前谢谢!

1 个答案:

答案 0 :(得分:3)

我认为你自己回答,应该使用两者

确保您可以将required设置为false并让您的应用程序向用户写入通知。否则,您可能无法通过Android Market将其分发给较旧的客户端。

<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" />
<uses-feature android:name="android.hardware.sensor.compass" android:required="true" />