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="進度" />
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="音量" />
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="可調整進度" />
<SeekBar
android:id="@+id/seekBar2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
package com.example.app27;
import android.app.Activity;
import android.app.Service;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ProgressBar;
import android.widget.SeekBar;
public class MainActivity extends Activity {
ProgressBar progress;
MediaPlayer player;
Handler handler;
AudioManager am;
SeekBar sbVolume;
SeekBar sbMusicPosition;
Boolean changeSeekBarPosition = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
am = (AudioManager) this.getSystemService(Service.AUDIO_SERVICE);
sbVolume = (SeekBar) this.findViewById(R.id.seekBar1);
sbVolume.setMax(am.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
sbVolume.setProgress(am.getStreamVolume(AudioManager.STREAM_MUSIC));
sbVolume.setOnSeekBarChangeListener(volumeListener);
sbMusicPosition = (SeekBar) this.findViewById(R.id.seekBar2);
sbMusicPosition.setOnSeekBarChangeListener(musicPositionListener);
progress = (ProgressBar) this.findViewById(R.id.progressBar1);
player = MediaPlayer.create(this, R.raw.stripme);
player.start();
progress.setMax(player.getDuration());
sbMusicPosition.setMax(player.getDuration());
handler = new Handler();
handler.post(updateProgress);
}
SeekBar.OnSeekBarChangeListener musicPositionListener = new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if (fromUser) {
player.seekTo(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
changeSeekBarPosition = false;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
changeSeekBarPosition = true;
}
};
SeekBar.OnSeekBarChangeListener volumeListener = new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
am.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
}
};
Runnable updateProgress = new Runnable() {
@Override
public void run() {
progress.setProgress(player.getCurrentPosition());
if (changeSeekBarPosition) {
sbMusicPosition.setProgress(player.getCurrentPosition());
}
handler.postDelayed(updateProgress, 50);
}
};
@Override
protected void onDestroy() {
super.onDestroy();
handler.removeCallbacks(updateProgress);
player.stop();
player.release();
}
}