日本做灯具公司网站自动收录
手机要是动一下,就喊话“摇摇零线,摇摇零线”,是不是比较酷,
这里实现一下手机翻转一下,播放声音的效果,
通过sensor识别到手机的运动状况,然后播放音频,
public class MainActivity extends AppCompatActivity {MySensorEventListener sensorEventListener;private String tag = "test9";public class MySensorEventListener implements SensorEventListener {private float prevY;private float prevZ;@Overridepublic void onSensorChanged(SensorEvent event) {float[] values = event.values;int type = event.sensor.getType();if (type == Sensor.TYPE_ACCELEROMETER) {float x = values[0];float y = values[1];float z = values[2];if (Float.compare(prevY, y) != 0 && Float.compare(prevZ, z) != 0) {if (y > prevY && z > prevZ) {// 顺时针翻转Log.i(tag, "1====");onFlip();} else if (y < prevY && z < prevZ) {// 逆时针翻转Log.i(tag, "2====");onFlip();Play();}}} else if (type == Sensor.TYPE_GYROSCOPE) {// 使用陀螺仪传感器的数据识别翻转,具体算法需要自己实现}}private void onFlip() {// 执行翻转后的操作}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// Do nothing}}void Play() {MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.hello);// MediaPlayer mediaPlayer = new MediaPlayer();try {Log.i(tag, "play =========== ");// mediaPlayer.setDataSource("/sdcard/Recordings/910.m4a");mediaPlayer.start();} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sensorEventListener = new MySensorEventListener();SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);sensorManager.registerListener(sensorEventListener,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI);}
}
初步的一个实现,没有使用service,直接播放声音,连续调用会出现同时播放的情况,反而有了回声的效果