我的Android音乐播放器 android音乐shakelistener
程序员文章站
2022-05-28 10:29:50
...
Android,一个神奇的平台,也是现在流行的最广泛的智能手机平台,今天的智能手机平台,Android平台的市场份额占据89%多,基本占据了智能手机的领域。
近些天来,首次接触Android,对Android有了一定的了解,在自己的了解之下做了一个简单的音乐播放器。现在就来简单的阐述一下我的音乐播放器.........
我的音乐播放器实现的功能主要有,SD卡歌曲遍历,上一首,下一首,暂停,播放,退出,进度条同步,音量控制,显示当前播放的歌曲的信息。以上是每个音乐播放器都必须具备的功能,此外实现的功能主要还有后台播放,歌词同步,手机重力感应换歌。在这里就简单的描述一下手机重力感应切换歌曲功能的实现。
我们知道,在Android里面有很多的Service,在这里主要用到的就是重力感应监听器,首先我们必须创建一个ShakeListener 去implements SensorEventListener,下面贴出主要的代码用来交流。
//开始
public void start() {
//获得传感器管理器
sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
if(sensorManager != null) {
//获得重力传感器
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
//注册
if(sensor != null) {
sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);
}
}获得我们的重力传感器管理器,通过对摇晃初末状态的监听,分别获得初末状态的三维坐标(x,y,z),
//现在检测时间
long currentUpdateTime = System.currentTimeMillis();
//两次检测的时间间隔
long timeInterval = currentUpdateTime - lastUpdateTime;
//判断是否达到了检测时间间隔
if(timeInterval < UPTATE_INTERVAL_TIME)
return;
//现在的时间变成last时间
lastUpdateTime = currentUpdateTime;
//获得x,y,z坐标
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
//获得x,y,z的变化值
float deltaX = x - lastX;
float deltaY = y - lastY;
float deltaZ = z - lastZ;
//将现在的坐标变成last坐标
lastX = x;
lastY = y;
lastZ = z;
double speed = Math.sqrt(deltaX*deltaX + deltaY*deltaY + deltaZ*deltaZ)/timeInterval * 10000;
//达到速度阀值,发出提示
if(speed >= SPEED_SHRESHOLD)
onShakeListener.onShake();
在初始时对速度和摇晃时间设立一个阀值,当在摇晃后的状态进行监听,由double speed = Math.sqrt(deltaX*deltaX + deltaY*deltaY + deltaZ*deltaZ)/timeInterval * 10000;计算出摇晃手机的速度,由//两次检测的时间间隔
long timeInterval = currentUpdateTime - lastUpdateTime; 计算出时间间隔,当时间间隔和速度达到所设定的阀值时,触发Shakelistener监听,在其onShake()方法中实行想进行的操作,比如说切换歌曲,切换图片等等。
//创建一个ShakeListener对象
ShakeListener shake_listener=new ShakeListener(this);
// 添加监听
shake_listener.setOnShakeListener(shake);
//调用setOnShakeListener方法进行监听
OnShakeListener shake=new OnShakeListener(){
@Override
public void onShake() {
playnext();
}};
这样就实现了歌曲的重力感应切换了。以下就是我的播放器的运行效果。
近些天来,首次接触Android,对Android有了一定的了解,在自己的了解之下做了一个简单的音乐播放器。现在就来简单的阐述一下我的音乐播放器.........
我的音乐播放器实现的功能主要有,SD卡歌曲遍历,上一首,下一首,暂停,播放,退出,进度条同步,音量控制,显示当前播放的歌曲的信息。以上是每个音乐播放器都必须具备的功能,此外实现的功能主要还有后台播放,歌词同步,手机重力感应换歌。在这里就简单的描述一下手机重力感应切换歌曲功能的实现。
我们知道,在Android里面有很多的Service,在这里主要用到的就是重力感应监听器,首先我们必须创建一个ShakeListener 去implements SensorEventListener,下面贴出主要的代码用来交流。
//开始
public void start() {
//获得传感器管理器
sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
if(sensorManager != null) {
//获得重力传感器
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
//注册
if(sensor != null) {
sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);
}
}获得我们的重力传感器管理器,通过对摇晃初末状态的监听,分别获得初末状态的三维坐标(x,y,z),
//现在检测时间
long currentUpdateTime = System.currentTimeMillis();
//两次检测的时间间隔
long timeInterval = currentUpdateTime - lastUpdateTime;
//判断是否达到了检测时间间隔
if(timeInterval < UPTATE_INTERVAL_TIME)
return;
//现在的时间变成last时间
lastUpdateTime = currentUpdateTime;
//获得x,y,z坐标
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
//获得x,y,z的变化值
float deltaX = x - lastX;
float deltaY = y - lastY;
float deltaZ = z - lastZ;
//将现在的坐标变成last坐标
lastX = x;
lastY = y;
lastZ = z;
double speed = Math.sqrt(deltaX*deltaX + deltaY*deltaY + deltaZ*deltaZ)/timeInterval * 10000;
//达到速度阀值,发出提示
if(speed >= SPEED_SHRESHOLD)
onShakeListener.onShake();
在初始时对速度和摇晃时间设立一个阀值,当在摇晃后的状态进行监听,由double speed = Math.sqrt(deltaX*deltaX + deltaY*deltaY + deltaZ*deltaZ)/timeInterval * 10000;计算出摇晃手机的速度,由//两次检测的时间间隔
long timeInterval = currentUpdateTime - lastUpdateTime; 计算出时间间隔,当时间间隔和速度达到所设定的阀值时,触发Shakelistener监听,在其onShake()方法中实行想进行的操作,比如说切换歌曲,切换图片等等。
//创建一个ShakeListener对象
ShakeListener shake_listener=new ShakeListener(this);
// 添加监听
shake_listener.setOnShakeListener(shake);
//调用setOnShakeListener方法进行监听
OnShakeListener shake=new OnShakeListener(){
@Override
public void onShake() {
playnext();
}};
这样就实现了歌曲的重力感应切换了。以下就是我的播放器的运行效果。
推荐阅读