播放MP3,設置進度條

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

mp3檔案放置在res\raw裡面

※progress.setMax必須放在player.start();後面

package com.example.app27;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ProgressBar;

public class MainActivity extends Activity {

    ProgressBar progress;
    MediaPlayer player;
    Handler handler;//使用handler重複去更新進度條的進度

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        progress = (ProgressBar) this.findViewById(R.id.progressBar1);
        player = MediaPlayer.create(this, R.raw.stripme);//mp3資源檔
        player.start();
        progress.setMax(player.getDuration());//設置最大值為player的持續時間
        handler = new Handler();
        handler.post(updateProgress);//更新進度
    }

    Runnable updateProgress = new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            progress.setProgress(player.getCurrentPosition());
            handler.postDelayed(updateProgress, 50);
        }
    };

    @Override
    protected void onDestroy() {
        super.onDestroy();
        handler.removeCallbacks(updateProgress);
        player.stop();
        player.release();//釋放
    }
}