溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

利用Android怎么編寫一個(gè)本地音樂播放器

發(fā)布時(shí)間:2020-12-04 16:44:02 來源:億速云 閱讀:243 作者:Leah 欄目:移動(dòng)開發(fā)

利用Android怎么編寫一個(gè)本地音樂播放器?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

音樂播放需要調(diào)用service,在此,只是簡單梳理播放流程。

public class PlayMusicService extends Service {

 //綁定服務(wù) 調(diào)用服務(wù)的方法。
 @Override
 public IBinder onBind(Intent intent) {
  return null;
 }

}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context=".MainActivity" >

 <EditText
  android:id="@+id/et_path"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:hint="請輸入要播放文件的路徑" />

 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal" >

  <Button
   android:id="@+id/bt_play"
   android:onClick="play"
   android:layout_width="0dip"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="播放" />
  <Button
    android:id="@+id/bt_pause"
   android:onClick="pause"
   android:layout_width="0dip"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="暫停" />
  <Button
    android:id="@+id/bt_stop"
   android:onClick="stop"
   android:layout_width="0dip"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="停止" />
  <Button
    android:id="@+id/bt_replay"
   android:onClick="replay"
   android:layout_width="0dip"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="重播" />
 </LinearLayout>

</LinearLayout>
public class MainActivity extends Activity {
 private EditText et_path;

 private MediaPlayer mediaPlayer;

 private Button bt_play,bt_pause,bt_stop,bt_replay;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 et_path = (EditText) findViewById(R.id.et_path);
 bt_play = (Button) findViewById(R.id.bt_play);
 bt_pause = (Button) findViewById(R.id.bt_pause);
 bt_stop = (Button) findViewById(R.id.bt_stop);
 bt_replay = (Button) findViewById(R.id.bt_replay);
 }
 /**
 * 播放
 * @param view
 */
 public void play(View view) {
 String filepath = et_path.getText().toString().trim();
 File file = new File(filepath);
 if(file.exists()){
  try {
  mediaPlayer = new MediaPlayer();
  mediaPlayer.setDataSource(filepath);//設(shè)置播放的數(shù)據(jù)源。
  mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
  mediaPlayer.prepare();//準(zhǔn)備開始播放 播放的邏輯是c代碼在新的線程里面執(zhí)行。
  mediaPlayer.start();
  bt_play.setEnabled(false);
  mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
   @Override
   public void onCompletion(MediaPlayer mp) {
   bt_play.setEnabled(true);
   }
  });
  } catch (Exception e) {
  e.printStackTrace();
  Toast.makeText(this, "播放失敗", 0).show();
  }
 }else{
  Toast.makeText(this, "文件不存在,請檢查文件的路徑", 0).show();
 }
 }
 /**
 * 暫停
 * @param view
 */
 public void pause(View view) {
 if("繼續(xù)".equals(bt_pause.getText().toString())){
  mediaPlayer.start();
  bt_pause.setText("暫停");
  return;
 }
 if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
  mediaPlayer.pause();
  bt_pause.setText("繼續(xù)");
 }
 }
 /**
 * 停止
 * @param view
 */
 public void stop(View view) {
 if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
  mediaPlayer.stop();
  mediaPlayer.release();
  mediaPlayer = null;
 }
 bt_pause.setText("暫停");
 bt_play.setEnabled(true);
 }
 /**
 * 重播
 * @param view
 */
 public void replay(View view) {
 if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
  mediaPlayer.seekTo(0);
 }else{
  play(view);
 }
 bt_pause.setText("暫停");
 }

}

看完上述內(nèi)容,你們掌握利用Android怎么編寫一個(gè)本地音樂播放器的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI