1

onShakeメソッドを使って新しいアクティビティを始めたいです。すべて問題ありませんが、新しいアクティビティが開始されると、onShake コマンドは引き続き使用できます (電話を 5 回振ると、新しいアクティビティが 5 回開始されます)。電話を振って新しいアクティビティを 1 回だけ開始するにはどうすればよいですか? これが私のコードです。

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);
      }
    });
}}

下手な英語ですみません。ご協力ありがとう御座います。

4

2 に答える 2

2

でunregisterListener()を使用しonPause()ます。

于 2011-08-15T16:29:17.170 に答える
0

インスタンス変数 (ブール値) を使用し、最初は false に設定します。onShake()が初めて呼び出されたとき、新しいアクティビティを開始する前に false かどうかを確認します。次に、それを true に変更して、アクティビティを開始します。次にonShake()メソッドが呼び出されたときに、インスタンス変数が true に設定されているため、アクティビティは開始されません。

于 2011-08-15T17:15:13.093 に答える