独立开发音乐播放器3
来源:互联网 发布:json格式数据 编辑:程序博客网 时间:2024/06/05 18:49
package codefans.app.activity;import codefans.app.util.Mp3Util;import codefans.mp3layer.R;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.view.View;import android.widget.ImageButton;import android.widget.SeekBar;public class Mp3PlayerActivity extends Activity{private boolean flag = false; //播放 暂停 变量判断private ImageButton playBt;private SeekBar seekBar;private Intent intent; //播放信息意图private Bundle bundle; //意图传递的信息private SeekBarReceiver receiver;private int position; //播放进度条位置@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);this.playBt = (ImageButton) findViewById(R.id.play);this.seekBar = (SeekBar) findViewById(R.id.seekBar);//意图 启动service使用this.intent = new Intent("codefans.action.Mp3Player");bundle = new Bundle();//注册广播接受器receiver = new SeekBarReceiver(); IntentFilter filter = new IntentFilter();filter.addAction("codefans.intent.action.Mp3Player");this.registerReceiver(receiver, filter);}//播放按钮点击public void mediaPlay(View v){if(flag == false) //改变播放按钮图标{ playBt.setImageResource(R.drawable.stop); flag = true; this.bundle.putString("filePath", "qq.mp3"); this.bundle.putInt("operate", Mp3Util.PLAY); this.intent.putExtras(bundle); startService(intent); }else{ playBt.setImageResource(R.drawable.play); flag = false; this.bundle.putInt("operate", Mp3Util.STOP); this.intent.putExtras(bundle); startService(intent); }}@Overrideprotected void onDestroy(){this.unregisterReceiver(receiver); //解除接受广播 super.onDestroy();}/** * bindService 实现需要 这里使用startservice * @author Codefans *//启动服务需要类private class MyServiceConnection implements ServiceConnection{public void onServiceConnected(ComponentName name, IBinder service){Mp3PlayerActivity.this.binder = (Player) service;}public void onServiceDisconnected(ComponentName name){Mp3PlayerActivity.this.binder = null;}} *//** * 播放进度条 位置广播接受器 * @author Codefans * */private class SeekBarReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent){ Mp3PlayerActivity.this.position = intent.getIntExtra("position", 0); // Message msg = new Message(); Mp3PlayerActivity.this.seekBar.setProgress(position); // Log.i("result", String.valueOf(position)); }}}
package codefans.app.service;import java.io.File;import java.io.IOException;import codefans.app.util.Mp3Util;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.media.MediaPlayer.OnPreparedListener;import android.os.Bundle;import android.os.Environment;import android.os.IBinder;public class Mp3Service extends Service{private MediaPlayer mediaPlayer;private File musicFile;private String name;@Overridepublic void onCreate(){if (this.mediaPlayer == null){this.mediaPlayer = new MediaPlayer();}}@Overridepublic void onDestroy(){if (this.mediaPlayer != null){this.mediaPlayer.stop();this.mediaPlayer.release();this.mediaPlayer = null;}super.onDestroy();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId){Bundle bundle = intent.getExtras();switch (bundle.getInt("operate")){case Mp3Util.PLAY:this.playMusci(bundle.getString("filePath"));break;case Mp3Util.STOP:this.stop();break;}return START_STICKY;}@Overridepublic IBinder onBind(Intent intent){return null;}// 开始播放private void playMusci(String fileName){try{if (fileName.equals(name)) //播放同文件 {this.mediaPlayer.start();}else //播放不同文件{this.name = fileName;this.musicFile = new File(Environment.getExternalStorageDirectory(), fileName);this.mediaPlayer.reset();this.mediaPlayer.setDataSource(musicFile.getAbsolutePath());this.mediaPlayer.prepare();this.mediaPlayer.setOnPreparedListener(new MyPreParedListenner());Thread t = new SendBroadCastThread();t.start();}}catch (IllegalArgumentException e){e.printStackTrace();}catch (IllegalStateException e){e.printStackTrace();}catch (IOException e){e.printStackTrace();}}private void stop() //暂停{this.mediaPlayer.pause();}// mediaPlayer缓存完执行事件private class MyPreParedListenner implements OnPreparedListener{public void onPrepared(MediaPlayer mp){mp.start();}}/** * 发送播放位置线程, 每隔一秒发送一次广播 改变播放器进度条 * @author Codefans * */private class SendBroadCastThread extends Thread{@Overridepublic void run(){while(true){Intent intent = new Intent();intent.putExtra("position", Mp3Service.this.mediaPlayer.getCurrentPosition());intent.setAction("codefans.intent.action.Mp3Player");// action与接收器相同sendBroadcast(intent); //发送广播try{Thread.sleep(1000);}catch (InterruptedException e){e.printStackTrace();}}}}/** * 新建一个内部类 Activity调用service时返回此binder * * @author Codefans * * private class Mp3IBinder extends Binder implements Player { * * public void playMusic(String filePath) { * Mp3Service.this.playMusci(filePath); } * * } */}
代码也不知道怎么发 都发上来了
今天主要写了关闭Activity后台依然在唱歌 还有一个就是进度条跟随播放 前进
- 独立开发音乐播放器3
- 独立开发音乐播放器
- 独立开发音乐播放器2
- Android开发本地及网络Mp3音乐播放器(六)实现独立音乐播放界面
- 音乐播放器开发
- Android开发音乐播放器-音乐扫描
- Android开发音乐播放器
- Android开发音乐播放器
- Android开发音乐播放器
- 音乐播放器开发记录
- 开发音乐播放器【1】
- iOS开发:音乐播放器
- 音乐播放器 - iOS开发
- 音乐播放器的开发
- 音乐播放器3
- 自己动手开发音乐播放器《十一》下载音乐播放器
- android音乐播放器开发 SweetMusicPlayer 播放本地音乐
- OS音频开发之音乐播放器 - 后台播放音乐
- iphone UIScrollView详解(转)
- Ngnix 源码学习----内存池的申请
- linux字符设备模型
- vmtools设置共享文件夹在linux的mnt/hgfs下却看不到文件夹的问题
- PlayBook应用开发系列讲座 - 使用Adobe AIR 2011
- 独立开发音乐播放器3
- hdu 4223 Dynamic Programming?
- Myeclipse9破解终于搞定了,找了很多都不行,无法自动生成System id 可以自动生成systemid 自动替换文件
- 替换数字金额为大写金额
- 第9周任务1(Complex类中的<<和>>运算符重载实现时间的输入和输出)
- lvm 空间缩减操作
- snprintf用法
- 非阻塞通讯(3)
- java 取cpuid、主板id、硬盘id、mac地址