我在这里检查了文档: 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]);
}
提前谢谢!
答案 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" />