摇一摇

  1 package com.example.administrator.mystudent.ShakeShake;
  2 
  3 import android.hardware.Sensor;
  4 import android.hardware.SensorEvent;
  5 import android.hardware.SensorEventListener;
  6 import android.hardware.SensorManager;
  7 import android.media.AudioManager;
  8 import android.media.SoundPool;
  9 import android.os.Handler;
 10 import android.os.Message;
 11 import android.os.Vibrator;
 12 import android.support.v7.app.AppCompatActivity;
 13 import android.os.Bundle;
 14 import android.view.animation.Animation;
 15 import android.view.animation.RotateAnimation;
 16 import android.widget.ImageView;
 17 import android.widget.Toast;
 18 
 19 import com.example.administrator.mystudent.R;
 20 
 21 
 22 
 23 public class ShakeActivity extends AppCompatActivity {
 24     private static final String TAG = "摇一摇";
 25     private static final int SENSOR_SHAKE = 10;
 26     private ImageView mImageShake;
 27     private SensorManager mSensorManager;
 28     private Vibrator mVibrator;
 29 
 30     @Override
 31     protected void onCreate(Bundle savedInstanceState) {
 32         super.onCreate(savedInstanceState);
 33         setContentView(R.layout.activity_shake);
 34         init();
 35     }
 36 
 37     private void init() {
 38         mImageShake= (ImageView) findViewById(R.id.iv_shake);
 39         mSensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);
 40         mVibrator= (Vibrator) getSystemService(VIBRATOR_SERVICE);
 41     }
 42 
 43     /**
 44      * 但显示当前界面的时候
 45      */
 46     @Override
 47     protected void onResume() {
 48         super.onResume();
 49         if(mSensorManager!=null){
 50             // 第一个参数是Listener,第二个参数是所得传感器类型,第三个参数值获取传感器信息的频率
 51             mSensorManager.registerListener(mSensorEventListener,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
 52         }
 53     }
 54 
 55     @Override
 56     protected void onStop() {
 57         super.onStop();
 58         if (mSensorManager != null) {
 59             // 取消监听器
 60             mSensorManager.unregisterListener(mSensorEventListener);
 61         }
 62     }
 63 
 64     //传感器监听类
 65   private SensorEventListener mSensorEventListener=new SensorEventListener() {
 66 
 67         @Override
 68         public void onSensorChanged(SensorEvent event) {
 69              // 传感器信息改变时执行该方法
 70             float[] values = event.values;
 71             float x = values[0]; // x轴方向的重力加速度,向右为正
 72             float y = values[1]; // y轴方向的重力加速度,向前为正
 73             float z = values[2]; // z轴方向的重力加速度,向上为正
 74             // 一般在这三个方向的重力加速度达到40就达到了摇晃手机的状态。
 75             int medumValue = 18;// 如果不敏感请自行调低该数值,低于10的话就不行了,因为z轴上的加速度本身就已经达到10了
 76             if (Math.abs(x) > medumValue || Math.abs(y) > medumValue || Math.abs(z) > medumValue) {
 77                 mVibrator.vibrate(200);
 78                 Message msg = new Message();
 79                 msg.what = SENSOR_SHAKE;
 80                 handler.sendMessage(msg);
 81             }
 82         }
 83 
 84         @Override
 85         public void onAccuracyChanged(Sensor sensor, int accuracy) {
 86          //当传感器的精度变化时会调用
 87         }
 88     };
 89 
 90     Handler handler=new Handler(){
 91         @Override
 92         public void handleMessage(Message msg) {
 93             super.handleMessage(msg);
 94             if(msg.what==SENSOR_SHAKE){
 95                 setAimation();
 96                 setVoice();
 97                 Toast.makeText(getApplicationContext(),"恭喜你摇到了iphone7",Toast.LENGTH_SHORT).show();
 98             }
 99         }
100     };
101 
102     private void setVoice() {
103 
104         SoundPool  sp= new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);
105         sp.load(this,R.raw.clock, 1); //第二个参数是音乐资源文件
106         sp.play(1, 1, 1, 0, 0, 1);//播放声音
107     }
108 
109     private void setAimation() {
110         RotateAnimation ra=new RotateAnimation(0.0f, 60.0f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f);
111         ra.setDuration(200);
112         mImageShake.startAnimation(ra);
113     }
114 
115 }

 

posted @ 2016-09-28 16:14  点滴之水  阅读(228)  评论(0)    收藏  举报