这篇重发
一直在学习android开发,用博文记下自己开发过程中的点点滴滴岂不是更好,因此申请了博客,记下开发过程,见证自己的成长。学习java的时间不长,android开发的时间就更短了,代码中有什么不
合理的地方,希望朋友们提出了。
刚学习android开发的时候就想做一个
音乐播放器了,不过一直跟老师做3D游戏,也就没有时间,现在找时间开始做了,希望朋友们提出更好的方式。
音乐播放是在后台的,为达到着这种效果,就要用到
Service。Service在后台运行任务,后台的Service可以通过BroadcastReceiver来响应发送的Broadca
Intent来实现前台与后台的Service交互。启动Service需要通过Context对象(可以是一个Activity)调用startService方法或bindServic方法。这里用startService方法来启动,如果没有启动Service,首先调用0nCreate方法,然后调用其onStart方法,如果Service已经启动,则只带有onStart方法,这里只重写了onCreate方法。
首先要开发PlayerMusicService类继承android.app.Service,代码如下:
public class PlayerMusicService extends Service{
private static MediaPlayer mMediaPlayer;
public static final String NEXT_MUSIC="com.zs.shao.PlayerMusicService";
private static int notificationId=0;
NotificationManager manager;
Notification notification;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate()
{
super.onCreate();
manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent=new Intent();
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);
notification=new Notification();
notification.icon=R.drawable.icon;
notification.when=System.currentTimeMillis();
notification.setLatestEventInfo(this, "Ω静听", null, contentIntent);
manager.notify(notificationId,notification);
mMediaPlayer = new MediaPlayer();
//mMediaPlayer.setOnPreparedListener();
mMediaPlayer.setOnCompletionListener(new OnCompletionListener()//当一首歌播放完之后调用该方法
{
@Override
public void onCompletion(MediaPlayer mp) {
sendBroadcast(new Intent(NEXT_MUSIC));
}
});
}
@Override
public void onDestroy()
{
super.onDestroy();
manager.cancel(notificationId);
System.exit(0);
}
public static void playMusic(String path)
{
try{
mMediaPlayer.reset();
mMediaPlayer.setDataSource(path);
mMediaPlayer.prepare();
start();
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void start()
{
mMediaPlayer.start();
}
public static void pause()
{
mMediaPlayer.pause();
}
public static void stop()
{
mMediaPlayer.stop();
}
public static boolean isPlaying()
{
return mMediaPlayer.isPlaying();
}
}
这部分代码在有关android的书籍了都会有所介绍的,大家可以选择更好的看。在onCreate()方法里用到了Notification,在后面将会有所介绍。
Activity中的IntentFilter和BroadcastReceiver:
IntentFilter filter = new IntentFilter();
filter.addAction(PlayerMusicService.NEXT_MUSIC);
registerReceiver(recerverInfo, filter);
protected BroadcastReceiver recerverInfo=new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
String action=intent.getAction();
if(action.equals(PlayerMusicService.NEXT_MUSIC))
{//收到播放下一首歌曲的消息
nextMusic();
musicName();
}
}
};