2010-06-04 3 views
3

Я не могу найти много информации на аппаратном компасе Android. Я продолжаю пытаться настроить свои критерии, чтобы заставить Android использовать аппаратный компас. В основном моя проблема заключается в том, что я хочу, чтобы подшипник обновлялся, даже когда устройство неподвижно.Android, используя аппаратный компас

По моему мнению, GPS только обновит ваш подшипник, когда вы двигаетесь. Я бы хотел, чтобы обновление обновлялось независимо от того, движетесь или нет. Я пробовал обмануть устройство и подумал, что он движется, установив скорость с постоянной 10, но подшипник всегда возвращает 0.0.

Мое устройство для тестирования (в настоящее время) - это татуировка HTC. У этого есть компас, так что это не проблема. Поэтому мой вопрос: есть ли способ заставить подшипник обновляться с помощью аппаратного компаса или нет? независимо от того, движется ваш или нет?

ответ

2

Вы видели this example code? Здесь SensorListener используется для запроса ориентации:

mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
mListener = new SensorListener() { 
    public void onSensorChanged(int sensor, float[] values) { 
     if (Config.LOGD) Log.d(TAG, "sensorChanged (" + values[0] + ", " + values[1] + ", " + values[2] + ")"); 
     mValues = values; 
     if (mView != null) { 
      mView.invalidate(); 
     } 
    } 
mSensorManager.registerListener(mListener, 
        SensorManager.SENSOR_ORIENTATION, 
        SensorManager.SENSOR_DELAY_GAME); 

Ok, так что это осуждается код. Теперь SensorManager имеет метод getOrientation(), который можно использовать. Это, однако, требует матрицы поворота. См. here for an example.

+0

Это использование изношенных API, хотя нет другого пути? – Skizit

+0

Простите, я был в стороне от Android на пару месяцев. Я вижу, что теперь существует метод 'SensorManager.getOrientation (float [])'. – Marc

+0

Это то, что я искал! Благодаря! :) – Skizit

Смежные вопросы