600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Android 使用Service 实现的简易音乐播放器(有播放 暂停(继续) 重播 停止)

Android 使用Service 实现的简易音乐播放器(有播放 暂停(继续) 重播 停止)

时间:2023-06-21 22:48:11

相关推荐

Android  使用Service 实现的简易音乐播放器(有播放 暂停(继续) 重播 停止)

小弟乃Android新手,昨天在学习了Android的Service后,动手实现了一个简易的音乐播放器。界面粗糙,功能简陋,但觉得对于新手的话还是有一定的借鉴作用的,故发表在本人的第一篇博客中。

在今后的学习和职业生涯中,将会陆续献上本人对Android其他技术的见解,希望各位走过路过的不吝赐教。

下面直接附上代码:

MainActivity.java

public class MainActivity extends Activity {private EditText editText;private Button btn_play,btn_pause,btn_restart,btn_stop;private PlayerBinder binder;private boolean isPause=false;//暂停标识File file;Intent service;private PlayerConnection conn=new PlayerConnection();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}public void init(){editText=(EditText)this.findViewById(R.id.edit);btn_play=(Button)this.findViewById(R.id.play);btn_pause=(Button)this.findViewById(R.id.pause);btn_restart=(Button)this.findViewById(R.id.restart);btn_stop=(Button)this.findViewById(R.id.stop);btn_play.setOnClickListener(listener);btn_pause.setOnClickListener(listener);btn_restart.setOnClickListener(listener);btn_stop.setOnClickListener(listener);service=new Intent(MainActivity.this,PlayerService.class);String name=editText.getText().toString();service.putExtra("name", name);}OnClickListener listener=new View.OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.play:startService(service);bindService(service, conn, BIND_AUTO_CREATE);//绑定服务break;case R.id.pause:if(isPause){binder.pause();btn_pause.setText("暂停");isPause=false;}else{binder.pause();btn_pause.setText("继续");isPause=true;;}break;case R.id.restart:binder.restart();break;case R.id.stop:binder.stop();unbindService(conn);//解除绑定break;}}};//当停止应用时,停止服务@Overrideprotected void onDestroy() {super.onDestroy();stopService(service);}private class PlayerConnection implements ServiceConnection{@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {binder=(PlayerBinder) service;}@Overridepublic void onServiceDisconnected(ComponentName name) {binder=null;}}}Service:PlayerService.javapublic class PlayerService extends Service {private IBinder binder=new PlayerBinder();private String path;//音乐文件存放路径private int position;//播放位置public MediaPlayer mediaPlayer;private File file;@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {String name=intent.getStringExtra("name");//利用intent获取将要播放的音乐的名称file=new File(Environment.getExternalStorageDirectory(),name);//创建文件对象(SD卡中)play(0);return super.onStartCommand(intent, flags, startId);}private void play(int position){mediaPlayer=new MediaPlayer();if(file.exists()){path=file.getAbsolutePath();}else{path=null;Toast.makeText(this, "该文件不存在SD卡中", 1).show();}try {mediaPlayer.reset();//把各项参数恢复到初始状态mediaPlayer.setDataSource(path);mediaPlayer.prepare();//缓冲mediaPlayer.setOnPreparedListener(new PreparedListener(position));} catch (Exception e) {e.printStackTrace();}}@Overridepublic IBinder onBind(Intent arg0) {return binder;}public class PlayerBinder extends Binder {//暂停public void pause(){if(mediaPlayer!=null&&mediaPlayer.isPlaying()){position=mediaPlayer.getCurrentPosition();mediaPlayer.pause();}else{mediaPlayer.start();mediaPlayer.seekTo(position);}}//重播public void restart(){if(mediaPlayer!=null){play(0);}}//停止public void stop(){if(mediaPlayer!=null){mediaPlayer.stop();}}}//当解除绑定时释放资源@Overridepublic boolean onUnbind(Intent intent) {mediaPlayer.release();return super.onUnbind(intent);}private final class PreparedListener implements OnPreparedListener{private int position;public PreparedListener(int position){this.position=position;}@Overridepublic void onPrepared(MediaPlayer arg0) {mediaPlayer.start();//开始播放;if(position>0)mediaPlayer.seekTo(position);}}}

以上是我写的音乐播放器的主要代码。欢迎评论、留言、讨论。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。