摇一摇demo
来源:互联网 发布:unity3d 粒子系统闪电 编辑:程序博客网 时间:2024/06/08 18:10
package com.example.wuhan.workapplication;import android.app.Activity;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Handler;import android.os.Message;import android.os.Vibrator;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.Toast;public class MainActivity extends Activity { private SensorManager sensorManager; private Vibrator vibrator; private int sum=0; private static final int SENSOR_SHAKE = 10; private long LastTime; private float lastX,lastY,lastZ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { sensorManager= (SensorManager) getSystemService(SENSOR_SERVICE); vibrator= (Vibrator) getSystemService(VIBRATOR_SERVICE); } @Override protected void onResume() { super.onResume(); if(sensorManager != null){ sensorManager.registerListener(listener,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL); // 第一个参数是Listener,第二个参数是所得传感器类型,第三个参数值获取传感器信息的频率 } } private SensorEventListener listener=new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { long currentUpdateTime=System.currentTimeMillis(); long TimeJiange=currentUpdateTime-LastTime; System.out.println("TimeJiange:"+TimeJiange); if(TimeJiange < 100){ return; } LastTime=currentUpdateTime; // 传感器信息改变时执行该方法 float[] values= event.values; float x=values[0]; float y=values[1]; float z=values[2]; float deltaX=x-lastX; float deltaY=y-lastY; float deltaZ=z-lastZ; lastX=x; lastY=y; lastZ=z; float delta = (float) (Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ) / TimeJiange * 10000); System.out.println("delta:"+delta); if(delta > 1000){ vibrator.vibrate(200); sum++; Message msg=new Message(); msg.what=SENSOR_SHAKE; handler.sendMessage(msg); } // 一般在这三个方向的重力加速度达到40就达到了摇晃手机的状态。 /*int medumValue =15;// 如果不敏感请自行调低该数值,低于10的话就不行了,因为z轴上的加速度本身就已经达到10了 if(Math.abs(x) > medumValue || Math.abs(y) > medumValue || Math.abs(z) > medumValue){ vibrator.vibrate(200); sum++; Message msg=new Message(); msg.what=SENSOR_SHAKE; handler.sendMessage(msg); }*/ } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case SENSOR_SHAKE: if(sum==5){ sensorManager.unregisterListener(listener); } Toast.makeText(MainActivity.this, "OK"+sum, Toast.LENGTH_SHORT).show(); } } }; @Override protected void onDestroy() { super.onDestroy(); sensorManager.unregisterListener(listener); }}
0 0
- 摇一摇demo
- 摇一摇demo
- Demo
- demo
- demo
- demo
- demo
- demo
- DEMO
- Demo
- DEMO
- demo
- Demo
- demo
- demo
- Demo
- demo
- demo
- 设计模式
- 在docker中部署tomcat并且部署java应用程序的步骤详解
- GreenDao3.0新特性解析(配置、注解、加密)
- Hibernate的主键生成策略
- MySql 执行 DELETE/UPDATE时,报 Error Code: 1175错误
- 摇一摇demo
- 移动端应用开篇宣言
- 简易http接口实现
- 数据结构实验之栈七:出栈序列判定
- 【浪叫兽】京东JData算法赛经验总结
- Linux下的ftp搭建
- Selector用法<致健忘的自己>
- poj 1703(并查集分组)
- 题目545Metric Matrice