Как заставить все мои действия слушать тряску устройства?

Как заставить приложение слушать тряску устройства? Я имею в виду не только активность в приложении, но и все. Я использовал TabActivity и выполнил всю логику регистрации/отмены регистрации SensorManager здесь, а также реализовал его как SensorEventListener для обнаружения тряски. Затем действия на вкладках прослушивались для пользовательского OnShakeListener, объявленного в моем TabActivity. но эта логика ведет к краху. Правильно ли я выбрал этот путь реализации и должен ли искать ошибки? ИЛИ Должен ли я вместо этого использовать службу, чтобы получить то, что я хочу? Или есть другой способ?


person charley_chaplin    schedule 30.11.2011    source источник
comment
Если вы делаете что-то конкретное для каждого действия с этими данными, то мне не имеет смысла использовать общий слушатель. Если вы просто хотите регистрировать эти данные или что-то еще, независимо от того, чем вы занимаетесь, то сервис может иметь смысл.   -  person skynet    schedule 30.11.2011


Ответы (1)


Реализуйте прослушиватель встряхивания (SensorEventListener) в одном abstract Activity (скажем: ShakeListenerActivity) и получите все остальные Activity, расширяющие ShakeListenerActivity.

определить абстрактный метод (скажем: shakeDetected(Params...)) в ShakeListenerActivity и переопределить его во всех дочерних Activities.

В дочернем Activity shakeDetected(Params...) вы можете реализовать другую логику соответственно.

звоните shakeDetected() всякий раз, когда вы обнаружите какое-либо дрожание через SensorEventListener

person Adil Soomro    schedule 30.11.2011
comment
Большое спасибо. Я пробовал этот способ безуспешно. Может быть, я ошибся с выбором места для регистрации/отмены регистрации SensorManager... Где я должен это сделать, используя этот способ? в TabActivity или любом другом? - person charley_chaplin; 30.11.2011
comment
зарегистрируйте его в onCreate() и отмените регистрацию в onDestroy() из ShakeListenerActivity - person Adil Soomro; 30.11.2011