【Android】MediaPlayer实现MP3播放小程序

Main.xml程序如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
 
    <TextView
        android:id="@+id/info"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="等待音频文件播放..." />
 
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
 
        <ImageButton
            android:id="@+id/play"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@+drawable/play" />
 
        <ImageButton
            android:id="@+id/pause"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@+drawable/pause" />
 
        <ImageButton
            android:id="@+id/stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@+drawable/stop" />
    </LinearLayout>
 
    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
 
</LinearLayout>

.java程序如下

package org.lxh.demo;
 
import java.io.IOException;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
 
public class Hello extends Activity {
	private ImageButton play = null;
	private ImageButton pause = null;
	private ImageButton stop = null;
	private TextView info = null;
	private MediaPlayer myMediaPlayer = null;
	private boolean pauseFlag = false;
	private boolean playFlag = true;
	private SeekBar seekbar = null;
 
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState); // 生命周期方法
		super.setContentView(R.layout.main); // 设置要使用的布局管理器
		this.info = (TextView) super.findViewById(R.id.info);
		this.play = (ImageButton) super.findViewById(R.id.play);
		this.pause = (ImageButton) super.findViewById(R.id.pause);
		this.stop = (ImageButton) super.findViewById(R.id.stop);
		this.seekbar = (SeekBar) super.findViewById(R.id.seekbar);
		this.play.setOnClickListener(new PlayOnClickListener());
		this.pause.setOnClickListener(new PauseOnClickListener());
		this.stop.setOnClickListener(new StopOnClickListener());
		this.seekbar.setOnSeekBarChangeListener(new SeekBarChangeListener());
 
	}
 
	private class PlayOnClickListener implements OnClickListener {
 
		public void onClick(View arg0) {
			if (Hello.this.myMediaPlayer == null) {
 
				Hello.this.myMediaPlayer = MediaPlayer.create(Hello.this,
						R.raw.mldn_ad);// 找到资源
				Hello.this.myMediaPlayer
						.setOnCompletionListener(new OnCompletionListener() {// 文件播放完
 
							public void onCompletion(MediaPlayer myMediaPlayer) {
								Hello.this.playFlag = false;
								Hello.this.myMediaPlayer.release();
							}
 
						});
				Hello.this.seekbar.setMax(Hello.this.myMediaPlayer
						.getDuration());
				UpdateSeekBar update = new UpdateSeekBar();
				update.execute(1000);
				try {
					Hello.this.myMediaPlayer.prepare();
				} catch (IllegalStateException e) {
					Hello.this.info.setText("文件播放异常..." + e);
				} catch (IOException e) {
					Hello.this.info.setText("文件播放异常..." + e);
				}
				Hello.this.myMediaPlayer.start();
				Hello.this.info.setText("正在播放音频文件...");
 
			}
 
		}
	}
 
	private class UpdateSeekBar extends AsyncTask<Integer, Integer, String> {
 
		@Override
		protected void onPostExecute(String result) {
		}
 
		@Override
		protected void onProgressUpdate(Integer... progress) {
			Hello.this.seekbar.setProgress(progress[0]);//更新拖动条
		}
 
		@Override
		protected String doInBackground(Integer... params) {
			while (Hello.this.playFlag) {
				try {
					Thread.sleep(params[0]);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				this.publishProgress(Hello.this.myMediaPlayer
						.getCurrentPosition());
			}
			return null;
		}
 
	}
 
	private class PauseOnClickListener implements OnClickListener {
 
		public void onClick(View arg0) {
			if (Hello.this.myMediaPlayer != null) {
				if (Hello.this.pauseFlag) {
					Hello.this.myMediaPlayer.start();
					Hello.this.pauseFlag = false;
				} else {
					Hello.this.myMediaPlayer.pause();
					Hello.this.pauseFlag = true;
				}
 
			}
 
		}
 
	}
 
	private class StopOnClickListener implements OnClickListener {
 
		public void onClick(View arg0) {
			if (Hello.this.myMediaPlayer != null) {
				Hello.this.myMediaPlayer.stop();
				Hello.this.info.setText("停止播放音频");
			}
 
		}
 
	}
 
	private class SeekBarChangeListener implements OnSeekBarChangeListener {
 
		public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
 
		}
 
		public void onStartTrackingTouch(SeekBar arg0) {
 
		}
 
		public void onStopTrackingTouch(SeekBar arg0) {//拖动进度条后
			Hello.this.myMediaPlayer.seekTo(Hello.this.seekbar.getProgress());
 
		}
 
	}
 
}

在这里插入图片描述

发布了72 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40110781/article/details/105027816