代碼如下:
public class MainActivity extends AppCompatActivity {
musicservice ms;
boolean mb = false;
private Button play;
private Button stop;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
play=(Button)findViewById(R.id.play);
stop=(Button)findViewById(R.id.stop);
progressBar=(ProgressBar) findViewById(R.id.progressBar3);
if(ms!=null) {
progressBar.setMax(ms.getdur());
}
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ms.play();
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ms.stop();
}
});
}
Handler handler=new Handler();
public void handleMessage(Message msg){
if(ms!=null) {
progressBar.setProgress(msg.what);
}
}
Runnable runnable = new Runnable() {
@Override
public void run() {
while(true){
if(ms!=null) {
Message msg = new Message();
msg.what = ms.getcurtime();
handler.sendMessage(msg);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
ServiceConnection mc = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
musicservice.LocalBinder binder = (musicservice.LocalBinder)service;
ms=binder.getservice();
mb=true;
}
@Override
public void onServiceDisconnected(ComponentName name) {
mb=false;
}
};
protected void onStart(){
super.onStart();
Intent mIntent = new Intent(this, musicservice.class);
bindService(mIntent, mc, BIND_AUTO_CREATE);
};
}
service
public class musicservice extends Service {
MediaPlayer mp;
private final IBinder iBinder = new LocalBinder();
public musicservice() {
}
public class LocalBinder extends Binder{
musicservice getservice()
{
return musicservice.this;
}
}
@Override
public void onCreate() {
super.onCreate();
mp=MediaPlayer.create(this,R.raw.emin);
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
return iBinder;
}
public int getcurtime(){
if(mp!=null){
return mp.getCurrentPosition();
}
return 0;
}
public int getdur(){
if(mp!=null){
return mp.getDuration();
}
return 0;
}
public void play(){
if(mp!=null)
{
mp.start();
}
}
public void stop(){
if(mp!=null){
mp.stop();
}
}
我這個音樂播放代碼播放和暫停都能用但是進度條不更新有沒有大佬指點一下萌新
uj5u.com熱心網友回復:
用Timer和TimerTask,另外執行緒暫停可以用SystemClock.sleepuj5u.com熱心網友回復:
我靠成了 謝謝謝 能給我講一下原來的為啥不行嗎轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/51741.html
標籤:Android
