源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Activity与Service之间交互并播放歌曲的实现代码

  • 时间:2020-09-17 06:11 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Activity与Service之间交互并播放歌曲的实现代码
Activity与Service之间交互并播放歌曲,为了方便,我把要播放的歌曲定死了,大家可以灵活改进   [img]http://files.jb51.net/file_images/article/201307/201307290932585.jpg[/img] [b]MService: [/b]
[u]复制代码[/u] 代码如下:
package com.tiantian.test; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.Binder; import android.os.Environment; import android.os.IBinder; import android.util.Log; public class MService extends Service{     MyBinder myBinder = new MyBinder();     private MediaPlayer mediaPlayer;     public class MyBinder extends Binder{         MService getService(){             return MService.this;         }     }     @Override     public IBinder onBind(Intent intent) {         // TODO Auto-generated method stub         Log.v("CAT", "onBind");         return myBinder;     }     @Override     public void onCreate() {         // TODO Auto-generated method stub         super.onCreate();         Log.v("CAT", "onCreate");         try {             mediaPlayer = new MediaPlayer();             mediaPlayer.setDataSource(Environment.getExternalStorageDirectory() + "/mp3/trhxn.mp3");             mediaPlayer.prepare();         } catch (Exception e) {             // TODO Auto-generated catch block             Log.v("CAT", "fail");             e.printStackTrace();         }     }     @Override     public void onDestroy() {         // TODO Auto-generated method stub         super.onDestroy();         Log.v("CAT", "onDestroy");     }     @Override     public int onStartCommand(Intent intent, int flags, int startId) {         // TODO Auto-generated method stub         Log.v("CAT", "onStartCommand");         return super.onStartCommand(intent, flags, startId);     }     @Override     public boolean onUnbind(Intent intent) {         // TODO Auto-generated method stub         Log.v("CAT", "onUnbind");         return false;     }     public void start(){         mediaPlayer.start();     }     public void pause(){         mediaPlayer.pause();     }     public void stop(){         mediaPlayer.stop();         mediaPlayer.release();     }     public int getDuration(){         return mediaPlayer.getDuration();     }     public int getCurrentPosition(){         return mediaPlayer.getCurrentPosition();     }     public void seekTo(int position){         mediaPlayer.seekTo(position);     } }
[b]MusicPlayActivity: [/b]
[u]复制代码[/u] 代码如下:
package com.tiantian.test; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.SeekBar; public class MusicPlayActivity extends Activity {     /** Called when the activity is first created. */     MService mService;     private ServiceConnection conn = new ServiceConnection(){         @Override         public void onServiceConnected(ComponentName arg0, IBinder arg1) {             // TODO Auto-generated method stub             mService = ((MService.MyBinder)arg1).getService();             Log.v("CAT", "getServiced");         }         @Override         public void onServiceDisconnected(ComponentName name) {             // TODO Auto-generated method stub             mService = null;         }     };     private SeekBar seekBar;     private Button playBT;     private boolean isPlaying = false;     private boolean isBinded = false;     private Handler mHandler;     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         Intent intent = new Intent(MusicPlayActivity.this, MService.class);         if(!isBinded){             bindService(intent, conn, BIND_AUTO_CREATE);             isBinded = true;         }         seekBar = (SeekBar) findViewById(R.id.seekBar);         playBT = (Button) findViewById(R.id.startBT);         mHandler = new Handler();         seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {             @Override             public void onStopTrackingTouch(SeekBar seekBar) {}             @Override             public void onStartTrackingTouch(SeekBar seekBar) {}             @Override             public void onProgressChanged(SeekBar seekBar, int progress,                     boolean fromUser) {                 if(fromUser){                     mService.seekTo((progress*mService.getDuration())/100);                 }             }         });         playBT.setOnClickListener(new OnClickListener() {             @Override             public void onClick(View v) {                 // TODO Auto-generated method stub                 if(!isPlaying){                     mService.start();                     isPlaying = true;                     playBT.setText("暂停");                     mHandler.post(seekBarThread);                 }else{                     mService.pause();                     isPlaying = false;                     playBT.setText("播放");                     mHandler.removeCallbacks(seekBarThread);                 }             }         });     }     Runnable seekBarThread = new Runnable() {         @Override         public void run() {             // TODO Auto-generated method stub             seekBar.setProgress((mService.getCurrentPosition()*100)/mService.getDuration());             mHandler.postDelayed(seekBarThread, 200);         }     }; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部