Я в процессе создания своих первых живых обоев. Я начинаю с кода в образце CubeWallpaper и изменяю его. Пока все идет хорошо, теперь я рисую свою собственную, совершенно другую анимационную графику.Чтение датчика наклона от живых обоев
Теперь я хочу, чтобы мои графики реагировали на степень наклона телефона. Я применил датчик наклона раньше в приложении без обоев. Но когда я пытаюсь включить мой наклонный код в обои, метод onSensorChanged()
не появляется, когда-либо вызываемый - по крайней мере, мое сообщение Log никогда не появляется в logcat.
Одна вещь, о которой я не уверен, - это то, где можно добавить implements SensorEventListener
. Должен ли мой класс распространять WallpaperService
или его дочерний класс, который расширяет Engine
? .. Фактически я пробовал это в обоих направлениях - и ни один из них не работал. Есть ли что-то дополнительное, что может потребоваться, чтобы заставить работать наклон?
EDIT: В настоящее время я предполагаю, что implements SensorEventListener
добавляется в класс, который расширяет Engine
, поэтому суть моего кода выглядит следующим образом:
EDIT: Может быть что-то делать с каким потоком работает SensorEventListener? Я где-то читал, что это должно быть в потоке пользовательского интерфейса.
public class MicksWallPaper extends WallpaperService
{
// blah blah
class MyWallPaper extends Engine implements SharedPreferences.OnSharedPreferenceChangeListener , SensorEventListener
{
SensorManager sensorManager = null;
onCreate()
{
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
}
public void onSensorChanged(SensorEvent event)
{
Log.i("wp:","onSensorChanged"); // I never see this message
synchronized (this)
{
switch (event.sensor.getType())
{
case Sensor.TYPE_ORIENTATION:
pitch = event.values[1];
Log.i("pitch=",""+pitch);
break;
}
}
}
}
}
EDIT: проблема решена. Как смущающе - я просто забыл вызвать registerListener для моего sensorManager.
Добавить свое окончательное редактирование в качестве ответа на свой вопрос ... вы можете получить больше SO-коричневых очков! –