Начать новое действие с помощью метода onShake - PullRequest
1 голос
/ 15 августа 2011

Я бы хотел начать новую деятельность, используя метод onShake. Все в порядке, но когда начинается новое действие, команда onShake все еще возможна (когда я встряхиваю свой телефон 5 раз, новое действие начинается 5 раз). Что я должен сделать, чтобы встряхнуть телефон и начать новую деятельность только один раз? Вот мой код.

public class ACTIVITY extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    SensorManager mSensorManager;

    ShakeEvent mSensorListener;

    mSensorListener = new ShakeEvent();
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mSensorManager.registerListener(mSensorListener,
        mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
        SensorManager.SENSOR_DELAY_UI);


    mSensorListener.setOnShakeListener(new ShakeEvent.OnShakeListener() {

      public void onShake() {
          Intent i = new Intent(Shake.this, NEWACTIVITY.class);
          startActivity(i);
      }
    });
}}

Извините за мой плохой английский. Спасибо за помощь.

Ответы [ 2 ]

2 голосов
/ 15 августа 2011

Использовать unregisterListener () in onPause().

0 голосов
/ 15 августа 2011

Используйте переменную экземпляра (логическое значение) и изначально установите для нее значение false.Когда onShake() вызывается в первый раз, проверьте, не является ли оно ложным, перед началом нового действия.Затем измените его на true и начните упражнение.В следующий раз, когда будет вызван метод onShake(), ваша деятельность не начнется, поскольку переменная вашего экземпляра теперь установлена ​​в значение true.

...