展会信息港展会大全

Activity与Service之间交互并播放歌曲的实现代码
来源:互联网   发布日期:2016-01-14 10:20:25   浏览:1676次  

导读:以下是对Activity与Service之间交互并播放歌曲的 实现代码进行了详细的分析介绍,需要的朋友可以过来参考下Activity与Service之间交互并播放歌曲,为了方便,我把要播放的歌曲定死了,大家可以灵活改进MService ...

以下是对Activity与Service之间交互并播放歌曲的 实现代码进行了详细的分析介绍,需要的朋友可以过来参考下

Activity与Service之间交互并播放歌曲,为了方便,我把要播放的歌曲定死了,大家可以灵活改进

MService:

复制代码 代码如下:

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);

}

}

MusicPlayActivity:

复制代码 代码如下:

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);

}

};

}

赞助本站

人工智能实验室

相关热词: Activity Service 交互 播放

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港