首頁 > 其他

Android開發學習:[16]MediaPlayer播放音樂

2019-11-27 12:29:24

本經驗介紹Android裡面的MediaPlayer類來播放音樂,其中MediaPlayer是一個功能很強大的類。

1

首先開啟我們下載安裝好的Android Studio


2

然後我們寫入布局程式碼,三個按鈕用來播放,停止,暫停

<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView android:text="音訊播放器" android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:id="@+id/textView" />

    <LinearLayout

        android:orientation="horizontal"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

        android:layout_below="@+id/textView"

        android:layout_alignParentLeft="true"

        android:layout_alignParentStart="true">

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="播放"

            android:id="@+id/button"

            android:layout_weight="0.33" />

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="停止"

            android:id="@+id/button2"

            android:layout_weight="0.33" />

        <Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="暫停"

            android:id="@+id/button3"

            android:layout_weight="0.33" />

    </LinearLayout>

</RelativeLayout>


3

然後在res目錄下面新增raw檔案夾下面新增my.mp3檔案


4

然後我們在新增後台如下程式碼後臺程式碼

package com.basillee.asus.demo;

import android.app.Activity;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.os.Environment;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

import java.io.File;

public class MainActivity extends Activity {

    private MediaPlayer mediaPlayer;//MediaPlayer物件

    private boolean isPause=false;//是否暫停

    private File file;//要播放的檔案

    private TextView hint;//宣告提示資訊的文字框

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //獲取各功能按鈕

        final Button button=(Button)findViewById(R.id.button);//播放

        final Button button1=(Button)findViewById(R.id.button2);//暫停

        final Button button2=(Button)findViewById(R.id.button3);//停止

        hint=(TextView)findViewById(R.id.textView);

        if(!isFileExist()){

            button.setEnabled(false);

        }

        //對MediaPlayer物件新增事件監聽,當播放完成時重新開始音樂播放

        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override

            public void onCompletion(MediaPlayer mp) {

                play();

            }

        });

        //對播放按鈕進行事件監聽

        button.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                play();

                if(isPause){

                    button1.setText("暫停");

                    isPause=false;

                }

                button1.setEnabled(true);

                button2.setEnabled(true);

                button.setEnabled(false);

            }

        });

        //對暫停、繼續按鈕新增事件監聽器

        button1.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                if(mediaPlayer.isPlaying()&&!isPause){

                    mediaPlayer.pause();

                    isPause=true;

                    ((Button)v).setText("繼續");

                    hint.setText("暫停播放音訊....");

                    button.setEnabled(true);

                }else{

                    mediaPlayer.start();

                    ((Button)v).setText("暫停");

                    hint.setText("繼續播放音訊....");

                    button.setEnabled(false);

                }

            }

        });

        //對停止按鈕新增事件監聽器

        button2.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                mediaPlayer.stop();

                hint.setText("停止播放音訊...");

                button1.setEnabled(false);

                button2.setEnabled(false);

                button.setEnabled(true);

            }

        });

    }

    @Override

    protected void onDestroy() {

        if(mediaPlayer.isPlaying()){

            mediaPlayer.stop();

        }

        mediaPlayer.release();

        super.onDestroy();

    }

    //判斷檔案是否存在

    private boolean  isFileExist(){

        file=new File(Environment.getExternalStorageDirectory()+File.separator+"myMP32.mp3");

        if(file.exists()){

          //  mediaPlayer=new MediaPlayer();

            mediaPlayer=MediaPlayer.create(this,R.raw.my);

            try {

//                mediaPlayer.setDataSource(file.getAbsolutePath());

//                mediaPlayer.prepare();//預載入音訊

//                mediaPlayer.start();//播放音樂

            }catch (Exception e) {

                e.printStackTrace();

            }

            Toast.makeText(this,"file exist",Toast.LENGTH_LONG).show();

            return true;

        }else{

            Toast.makeText(this,"file don't exist",Toast.LENGTH_LONG).show();

        }

        return false;

    }

    //播放音樂的方法

    private void play(){

        try{

            mediaPlayer.reset();//從新設定要播放的音樂

 //           mediaPlayer.setDataSource(file.getAbsolutePath());

//            mediaPlayer.prepare();//預載入音訊

            mediaPlayer=MediaPlayer.create(this,R.raw.my);

            mediaPlayer.start();//播放音樂

            hint.setText("Music is starting");

        } catch (Exception e) {

            e.printStackTrace();

            Log.e("err",e.getMessage());

        }

        return ;

    }

}

主要是play方法


5

然後我們執行虛擬機器如下圖所示:


6

然後我們執行此程式點選播放按鈕就可以播放音樂了,其他按鈕功能大家可以自己試試。



IT145.com E-mail:sddin#qq.com