使用 onShake 方法启动新活动

Posted

技术标签:

【中文标题】使用 onShake 方法启动新活动【英文标题】:Start new activity using onShake method 【发布时间】:2011-08-15 16:22:49 【问题描述】:

我想使用 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);
      
    );

对不起,我的英语不好。谢谢你的帮助。

【问题讨论】:

【参考方案1】:

onPause() 中使用unregisterListener()。

【讨论】:

【参考方案2】:

使用一个实例变量(一个布尔值)并保持它最初设置为 false。当onShake()第一次被调用时,在开始新的activity之前检查它是否为false。然后将其更改为 true 并开始活动。下次调用 onShake() 方法时,您的活动将不会启动,因为您的实例变量现在设置为 true。

【讨论】:

以上是关于使用 onShake 方法启动新活动的主要内容,如果未能解决你的问题,请参考以下文章

从意图活动访问片段方法

当前正在使用相同的活动时,从通知栏启动新活动

如何在新的意图活动完成后启动其余方法

启动新活动后调用finish()

从片段返回主页活动而不启动新活动(主页)

如何在从 AppWidgetProvider android 启动新活动之前关闭所有活动