«

Android中摇一摇效果的实现

时间:2024-3-2 19:50     作者:韩俊     分类: Android


public class MainActivity extends Activity implements SensorEventListener {
    private Button clean_btn;
    private SensorManager mSensorManager;
    private Vibrator vibrator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //得到传感器管理器
        mSensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
        vibrator=(Vibrator) getSystemService(VIBRATOR_SERVICE);
        clean_btn=(Button) findViewById(R.id.clean_btn);
        clean_btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                clean_btn.setText("重測");
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        //获取加速传感器
        mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
                SensorManager.SENSOR_DELAY_NORMAL);

    }

    @Override
    protected void onStop() {
        super.onStop();
        mSensorManager.unregisterListener(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        mSensorManager.unregisterListener(this);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
         int sensortype=event.sensor.getType();
         float[] values=event.values;
         if(sensortype==Sensor.TYPE_ACCELEROMETER)
         {
             /*因为一般正常情况下,任意轴数值最大就在9.8~10之间,只有在你突然摇动手机 
              *的时候,瞬时加速度才会突然增大或减少。 
              *所以,经过实际测试,只需监听任一轴的加速度大于14的时候,改变你需要的设置 
              *就OK了~~~ 
              */  
             if(Math.abs(values[0])>14||Math.abs(values[1])>14||Math.abs(values[2])>14)
             {
                 clean_btn.setText("搖一搖");
                 vibrator.vibrate(500);
             }
         }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
         //当传感器精度改变时回调该方法,Do nothing. 
    }
}

应该还算比较简单,对了不要忘记加权限:

<uses-permission android:name="android.permission.VIBRATE"/>

        <p>版权声明:本文为博主原创文章,未经博主允许不得转载。</p>

标签: android

热门推荐