Я использую onSensorChanged (). Что я должен указать в <use-feature>? - PullRequest
2 голосов
/ 01 декабря 2010

Я проверил документ здесь: 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 Ответ

3 голосов
/ 01 декабря 2010

Я думаю, что вы отвечаете на него сами и должны использовать оба .

Убедитесь, что вы можете установить для false значение 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" />
...