阅读背景:

Android 如何实现微信摇一摇(加速度传感器)

来源:互联网 

使用加速度传感器判断手机是否在摇晃

展示代码:

MainActivity:

​ package com.example.day09yaoyiyao; import android.annotation.SuppressLint; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.Toast; import java.io.IOException; public class MainActivity extends AppCompatActivity implements SensorEventListener { private SensorManager sensorManager; private ImageView image_id; private ImageView image_up; private ImageView image_down; private SoundPool soundPool; private int mLoadId; @SuppressLint("ServiceCast") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); mLoadId = soundPool.load(getActivity(),R.raw.awe,1); //加速度传感器 sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); } @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { float x = event.values[0];//x轴的加速度 float y = event.values[1];//y轴的加速度 float z = event.values[2];//z轴的加速度 //静止状态下加速度为9.8,当加速度>15的时候就表示在摇晃手机 if (x > 15 || y > 15 || z > 15) { Toast.makeText(this, "你正在摇一摇", Toast.LENGTH_SHORT).show(); //播放音乐 //声音id, 左声道(0.0f -- 1.0f) , 右声道, 优先级, 是否循环(0 不循环, 1 循环) , 播放比例( 正常播放 1) soundPool.play(mLoadId,1.0f,1.0f,1,0,1.0f); //设置动画的效果 Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim_up); image_up.startAnimation(animation); Animation animation1 = AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim_down); image_down.startAnimation(animation1); } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } private void initView() { image_id = (ImageView) findViewById(R.id.image_id); image_up = (ImageView) findViewById(R.id.image_up); image_down = (ImageView) findViewById(R.id.image_down); } } ​ ​ package com.



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: