Android-类似微信和米聊中摇一摇找好友的功能的实现
jopen
11年前
要实现该功能,主要借助于重力感应
public class TestSensorActivity extends Activity implements SensorEventListener { private SensorManager manager; private Vibrator vibrator; private TextView xSensor,ySensor,zSensor; private float X = 0.0f; private float Y = 0.0f; private float Z = 0.0f; private Button button1,button2; private TextView textView; private Animation animation ,animation2 ; private FrameLayout layout; private ImageView imageView; private String[] strs; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case 0: textView.setText((String)msg.obj); imageView.startAnimation(animation); textView.startAnimation(animation); break; } } }; private int i = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); manager = (SensorManager) getSystemService(SENSOR_SERVICE); //首先得到传感器管理器对象 vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); //注册监听器 manager.registerListener(this, manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), manager.SENSOR_DELAY_NORMAL); //第一个参数是Listener,第二个参数是所得传感器类型,第三个参数值获取传感器信息的频率 } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); manager.unregisterListener(this);//解绑定Listener } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub //传感器信息改变时执行该方法 float[] values = event.values; float x = values[0]; //x轴方向的重力加速度,向右为正 float y = values[1]; // y轴方向的重力加速度,向前为正 float z = values[2]; // z轴方向的重力加速度,向上为正 if(x>40 || x<-40 || y>40 || y<-40 || z>40 || z<-40){ //一般在这三个方向的重力加速度达到40就达到了摇晃手机的状态。当然这个值可以根据需要,自己定义。 vibrator.vibrate(200); int random = getRandom(); Message msg = new Message(); msg.what = 0; msg.obj = strs[random]; handler.sendMessage(msg); } } }