简单mp3音频播放器的实现

本篇主要介绍使用Mediaplayer实现mp3简易音乐播放器,程序运行界面如下

下面是代码实现,因为代码比较简单,注释已经比较明确了。

public class PlayActivity extends Activity implements OnClickListener {
	private EditText filenameText;
	// 音频播放的主要类
	private MediaPlayer mediaPlayer;
	private String filename;
	// 记录播放位置
	private int position;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		filenameText = (EditText) this.findViewById(R.id.filename);
		mediaPlayer = new MediaPlayer();
		Button playButton = (Button) this.findViewById(R.id.play);
		Button pauseButton = (Button) this.findViewById(R.id.pause);
		Button resetButton = (Button) this.findViewById(R.id.reset);
		Button stopButton = (Button) this.findViewById(R.id.stop);
		playButton.setOnClickListener(this);
		pauseButton.setOnClickListener(this);
		resetButton.setOnClickListener(this);
		stopButton.setOnClickListener(this);
	}

	//按钮点击事件
	@Override
	public void onClick(View v) {
		filename = filenameText.getText().toString();
		Button button = (Button) v;
		try {
			switch (v.getId()) {
			case R.id.play:
				play();
				break;

			case R.id.pause:
				if (mediaPlayer.isPlaying()) {
					mediaPlayer.pause();
					button.setText("继续");
				} else {
					mediaPlayer.start();
					button.setText("暂停");
				}
				break;

			case R.id.reset:
				//重播
				if (mediaPlayer.isPlaying()) {
					mediaPlayer.seekTo(0);
				} else {
					play();
				}
				break;

			case R.id.stop:
				//停止
				if (mediaPlayer.isPlaying())
					mediaPlayer.stop();
				break;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
	//当播放界面因为来电或者Home键进入后台调用,保存文件名与播放位置,便于恢复
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		outState.putString("filename", filename);
		outState.putInt("position", position);
		super.onSaveInstanceState(outState);
	}

	//当界面进入后台被销毁,然后再次进入的时候被调用,在这里回复上次的播放状态
	@Override
	protected void onRestoreInstanceState(Bundle savedInstanceState) {
		this.filename = savedInstanceState.getString("filename");
		this.position = savedInstanceState.getInt("position");
		super.onRestoreInstanceState(savedInstanceState);
	}

	//当界面被遮挡,暂停播放
	@Override
	protected void onPause() {
		if (mediaPlayer.isPlaying()) {
			position = mediaPlayer.getCurrentPosition();
			mediaPlayer.stop();
		}
		super.onPause();
	}

	//当界面进入可交互状态,判断时候有文件名和播放记录,若有,则继续上次开始播放
	@Override
	protected void onResume() {
		if (position > 0 && filename != null) {
			try {
				play();
				mediaPlayer.seekTo(position);
				position = 0;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		super.onResume();
	}

	//销毁资源
	@Override
	protected void onDestroy() {
		mediaPlayer.release();
		super.onDestroy();
	}

	//播放方法的核心实现
	private void play() throws IOException {
		//获取播放文件名
		File audioFile = new File(Environment.getExternalStorageDirectory(),
				filename);
		//重置状态
		mediaPlayer.reset();
		//设置数据源
		mediaPlayer.setDataSource(audioFile.getAbsolutePath());
		//进行前期硬件准备
		mediaPlayer.prepare();
		//开始播放
		mediaPlayer.start();
	}

}

这个播放器因为使用的安卓自带的音频解码器,所以能够播放的音频格式很单一,如果要想播放更多音频格式的音乐,还需要研究其他格式音频解码器。

简单mp3音频播放器的实现,布布扣,bubuko.com

时间: 2024-08-06 15:56:30

简单mp3音频播放器的实现的相关文章

最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)

简介 之前做过一个简单的音频播放器:<最简单的基于FFMPEG+SDL的音频播放器>,采用的是SDL1.2.前两天刚把原先做的<最简单的基于FFMPEG+SDL的视频播放器>更新采用了SDL2.0,于是顺手也把音频播放器更新成为SDL2.0. SourceForge项目主页:https://sourceforge.net/projects/simplestffmpegaudioplayer/ 完整工程下载地址:http://download.csdn.net/detail/leix

IOS开发之简单音频播放器

今天第一次接触IOS开发的UI部分,之前学OC的时候一直在模拟的使用Target-Action回调模式,今天算是真正的用了一次.为了熟悉一下基本控件的使用方法,和UI部分的回调,下面开发了一个特别简易的音频播放器,来犒劳一下自己这一天的UI学习成果.在用到UI的控件时如果很好的理解之前博客在OC中的Target-Action回调模式,感觉控件的用法会很顺手.下面的简易播放器没有用到多高深的技术,只是一些基本控件和View的使用. 话不多说简单的介绍一下今天的音频播放器.在播放器中我们用到了UIP

最简单的基于FFMPEG+SDL的音频播放器:拆分-解码器和播放器

本文补充记录<最简单的基于FFMPEG+SDL的音频播放器>中的两个例子:FFmpeg音频解码器和SDL音频采样数据播放器.这两个部分是从音频播放器中拆分出来的两个例子.FFmpeg音频解码器实现了视频数据到PCM采样数据的解码,而SDL音频采样数据播放器实现了PCM数据到音频设备的播放.简而言之,原先的FFmpeg+SDL音频播放器实现了: 音频数据->PCM->音频设备 FFmpeg音频解码器实现了: 音频数据->PCM SDL音频采样数据播放器实现了: PCM->

Android通过意图使用内置的音频播放器

如果实现一个音频文件的播放,那么在应用程序中提供播放音频文件功能的最简单的方式是利用内置的"Music(音乐)"应用程序的功能--即使用系统自带的或已安装好的音乐播放器来播放指定的音频文件. 本例比较简单,下面直接给出源代码: 布局文件activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http:/

OCiOS开发:音频播放器 AVAudioPlayer

简单介绍 AVAudioPlayer音频播放器可以提供简单的音频播放功能.其头文件包括在AVFoudation.framework中. AVAudioPlayer未提供可视化界面,须要通过其提供的播放控制接口自行实现. AVAudioPlayer仅能播放本地音频文件,并支持以下格式文件:.mp3..m4a..wav..caf..aif?. 经常用法 初始化方法 // 1.NSURL 它仅仅能从file://格式的URL装入音频数据,不支持流式音频及HTTP流和网络流. - (id)initWit

关于HTML5中audio音频播放器的一些理解

最近由于工作需要音频,了解到了HTML5中新兴的audio音频播放器.关于它本身的自带的属性不过多介绍,但是需要着重提到的就是它自身就有play()和pause()两个函数可以拿来直接使用,也就是我们经常遇到的播放和暂停功能.下面是我写的实例,有兴趣的朋友可以下载附件观看.今天晚上能把这个问题搞出来,基本上HTML5中audio的一些常见,常用的需求都可以解决了.开心- <!DOCTYPE HTML> <html> <head> <meta charset=&qu

Html5之高级-5 HTML5音频处理(在H5中播放音频、编程实现音频播放器)

一.在HTML5中播放音频 audio 元素 - audio元素可以实现在HTML页面中嵌入音频内容,该元素的属性可以设置是否自动播放.预加载及循环播放等 - audio元素提供了播放.暂停和音量控件来控制音频 - 使用audio元素提供三种音频格式的文件:MP3.Ogg.Wav - MP3: 采用mpeg音频解码器 - Ogg: 采用ogg音频解码器 - Wav: 采用wav音频解码器 - 语法结构 audio 属性 - audio 元素支持以下属性 - src: 指定播放文件的URL,可通过

简单本地音乐播放器

// //  ViewController.m //  AudioPlayer // //  Created by apple on 14-7-18. //  Copyright (c) 2014年 苹果IOS软件开发者. All rights reserved. // #import "ViewController.h" #import <AVFoundation/AVFoundation.h> @interface ViewController ()<AVAudi

【jquery】一款不错的音频播放器——Amazing Audio Player

前段时间分享了一款视频播放器,点击这里.今天介绍一款不错的音频播放器——Amazing Audio Player. 介绍: Amazing Audio Player 是一个使用很方便的 Windows 和 MAC 应用程序,允许你创建 HTML5 音频播放器的网站.该音频播放器兼容 iPhone,ipad,Android,Chrome,Firefox,Safari,Opera 和 IE 7 / 8 / 9 / 10.同时它也可以发布成为一个 WordPress 的音频播放器插件,Joomla 音