安卓开发实现摇一摇功能!!!实例源码

时间:2016-07-28 11:50 来源:互联网 作者:源码搜藏收藏

  • 源码类别:重力感应CoreMotion
  • 源码大小:16.1 MB
  • 编码格式:gbk,utf8,不限
  • 运行环境:php+mysql
  • 广告推荐

核心代码片段如下:
/** 处理每次摇动结束的事件 */
private Handler handler = new Handler(){
 
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case SHAKE_START:
 
                isShake = true;//摇动中
                startAnimation();
 
                break;
            case SHAKE_END://摇动结束
 
                isShake = false;
                stopAnimation();
                Toast.makeText(TestSensorActivity1.this, "检测到摇晃,执行你想要的操作!", Toast.LENGTH_SHORT).show();
 
                break;
            default:
                break;
        }
        super.handleMessage(msg);
    }
};
 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.yaoyiyao_test1_layout);
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
    animation_yaoyiyao= (ImageView) findViewById(R.id.yaoyiyao_test1_img);
}
 
@Override
protected void onResume() {
    super.onResume();
    // 注册监听器
    sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
            SensorManager.SENSOR_DELAY_NORMAL);
}
 
@Override
protected void onPause() {
    super.onPause();
    sensorManager.unregisterListener(this);
}
 
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
    int sensorType = sensorEvent.sensor.getType();
    // values[0]:X轴,values[1]:Y轴,values[2]:Z轴
    float[] values = sensorEvent.values;
    Log.e("YaoYiYao", "values[0]:" + values[0] + "      values[1]:" + values[0] + "     values[2]" + values[0]);
    if (sensorType == Sensor.TYPE_ACCELEROMETER) {
 
        if ((Math.abs(values[0]) + Math.abs(values[1])+ Math
                .abs(values[2])) > 18) {
            // 摇动手机后,再伴随震动提示~~
            if(!isShake){
 
                vibrator.vibrate(new long[]{200, 300, 200, 300, 200}, -1);
                //发送一个空消息,告诉handler已经开始摇动了
                handler.sendEmptyMessage(SHAKE_START);
 
                //间隔1.2s,发送一个空消息,告诉handler已经结束摇动了//避免了多次请求处理
                handler.sendEmptyMessageDelayed(SHAKE_END, 1200);
            }
 
        }
 
    }
}
 
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
    // 当传感器精度改变时回调该方法,Do nothing.
}
本站资源仅限于学习研究,严禁从事商业或者非法活动! 源码搜藏网所有源码来自互联网转载与用户上传分享,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!
上一篇:没有了
下一篇:没有了

重力感应CoreMotion下载排行

最新文章