獨立開發音樂播放器2

來源:互聯網
上載者:User
package codefans.app.service;import java.io.File;import java.io.IOException;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.media.MediaPlayer.OnPreparedListener;import android.os.Binder;import android.os.Environment;import android.os.IBinder;public class Mp3Service extends Service{private IBinder myBinder = new Mp3IBinder();private MediaPlayer mediaPlayer;    private File musicFile;@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 IBinder onBind(Intent intent){return myBinder;}//開始播放private void playMusci(String fileName){try{this.musicFile = new File(Environment.getExternalStorageDirectory(), fileName);this.mediaPlayer.setDataSource(musicFile.getAbsolutePath());this.mediaPlayer.prepare();this.mediaPlayer.setOnPreparedListener(new MyPreParedListenner());}catch (IllegalArgumentException e){e.printStackTrace();}catch (IllegalStateException e){e.printStackTrace();}catch (IOException e){e.printStackTrace();}}//mediaPlayer緩衝完執行事件private class MyPreParedListenner implements OnPreparedListener{public void onPrepared(MediaPlayer mp){Mp3Service.this.mediaPlayer.start();}}/** * 建立一個內部類 Activity調用service時返回此binder * @author Codefans */private class Mp3IBinder extends Binder implements Player{public void playMusic(String filePath){Mp3Service.this.playMusci(filePath);}}}

service 播放功能

package codefans.app.activity;import codefans.app.service.Player;import codefans.mp3layer.R;import android.app.Activity;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.view.View;import android.widget.ImageButton;public class Mp3PlayerActivity extends Activity{private boolean flag = false;private ImageButton playBt;private Player binder;private ServiceConnection myServiceConnection = new MyServiceConnection();/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);this.playBt = (ImageButton) findViewById(R.id.play);Intent intent = new Intent("codefans.action.Mp3Player");bindService(intent, myServiceConnection, Context.BIND_AUTO_CREATE);}//播放按鈕點擊public void mediaPlay(View v){if(flag == false)  //改變播放按鈕表徵圖{   playBt.setImageResource(R.drawable.stop);   flag = true;     this.binder.playMusic("qq.mp3");         }else{ playBt.setImageResource(R.drawable.play); flag = false;}}@Overrideprotected void onDestroy(){unbindService(myServiceConnection);super.onDestroy();}//啟動服務需要類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;}}}

這裡用bindservice 好像不行,因為這樣如果掛掉Activity 那個service服務也停止了  應該用startservice  ! 這個明天再寫了 很遲了(嘿嘿)

唯寫了一個播放功能

  

上一篇   點擊開啟連結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.