准备三张图片,名字分别为: play、pause、stop。

将一个名为Mp3的文件放入res/raw文件夹中。

在main.xml中:

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#000000"

android:gravity="center_horizontal"

android:orientation="vertical">

<TextView

android:id="@+id/info"

android:gravity="center_horizontal"

android:layout_marginTop="8dp"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textColor="#ffffff"

        android:text="等待音频播放"/>

<LinearLayout

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:gravity="center_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_margin="8dp"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

</LinearLayout>

在MyMediaPlayerDemo.java中:

package com.li.mediaplayer;

import android.app.Activity;

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.widget.ImageButton;

import android.widget.SeekBar;

import android.widget.SeekBar.OnSeekBarChangeListener;

import android.widget.TextView;

public class MyMediaPlayerDemo extends Activity {

private ImageButton play = null ;

private ImageButton pause = null ;

private ImageButton stop = null ;

private TextView info = null ;

private MediaPlayer myMediaPlayer = null ;

private SeekBar seekbar = null ;

private boolean playFlag = true ;  // 播放标记

private boolean pauseFlag = true ; // 暂停标记

@Override

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 OnSeekBarChangeListenerImpl()) ;

}

private class UpdateSeekBar extends AsyncTask<Integer, Integer, String> {

@Override

protected void onPostExecute(String result) {

super.onPostExecute(result);

}

@Override

protected void onProgressUpdate(Integer... values) {

MyMediaPlayerDemo.this.seekbar.setProgress(values[0]) ;

}

@Override

protected String doInBackground(Integer... params) {

while(MyMediaPlayerDemo.this.playFlag) {  // 播放的话,进度要增长

try {

Thread.sleep(params[0]) ;

} catch (InterruptedException e) {

}

this.publishProgress(MyMediaPlayerDemo.this.myMediaPlayer.getCurrentPosition()) ;

}

return null ;

}

}

private class PlayOnClickListener implements OnClickListener{

public void onClick(View v) {

MyMediaPlayerDemo.this.myMediaPlayer = MediaPlayer.create(

MyMediaPlayerDemo.this, R.raw.mp3);  // 要播放的文件

if (MyMediaPlayerDemo.this.myMediaPlayer != null) {

MyMediaPlayerDemo.this.myMediaPlayer.stop(); // 停止操作

}

MyMediaPlayerDemo.this.seekbar.setMax(MyMediaPlayerDemo.this.myMediaPlayer.getDuration()) ;  // 设置拖拽条的长度

UpdateSeekBar update = new UpdateSeekBar() ;

update.execute(1000) ;

MyMediaPlayerDemo.this.myMediaPlayer.setOnCompletionListener(new OnCompletionListener(){

public void onCompletion(MediaPlayer mp) {

MyMediaPlayerDemo.this.playFlag = false ; // 播放完毕

MyMediaPlayerDemo.this.myMediaPlayer.release() ;  // 释放资源

}}) ;

try {

MyMediaPlayerDemo.this.myMediaPlayer.prepare() ;

MyMediaPlayerDemo.this.myMediaPlayer.start() ;

MyMediaPlayerDemo.this.info.setText("正在播放音频文件...") ;

} catch (Exception e) {

MyMediaPlayerDemo.this.info.setText("文件播放出现异常," + e) ;

}

}

}

private class PauseOnClickListener implements OnClickListener{

public void onClick(View v) {

if(MyMediaPlayerDemo.this.myMediaPlayer != null) {

if (MyMediaPlayerDemo.this.pauseFlag) { // 现在暂停

MyMediaPlayerDemo.this.myMediaPlayer.start();

MyMediaPlayerDemo.this.pauseFlag = false ;

} else {

MyMediaPlayerDemo.this.myMediaPlayer.pause(); // 暂停

MyMediaPlayerDemo.this.pauseFlag = true ;

}

}

}

}

private class StopOnClickListener implements OnClickListener{

public void onClick(View v) {

if(MyMediaPlayerDemo.this.myMediaPlayer != null) {

MyMediaPlayerDemo.this.myMediaPlayer.stop() ;  // 停止

MyMediaPlayerDemo.this.info.setText("停止播放音频文件...") ;

}

}

}

private class OnSeekBarChangeListenerImpl implements OnSeekBarChangeListener {

public void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser) {

}

public void onStartTrackingTouch(SeekBar seekBar) {

}

public void onStopTrackingTouch(SeekBar seekBar) {

MyMediaPlayerDemo.this.myMediaPlayer.seekTo(seekBar.getProgress()) ;

}

}

}

小型Mp3播放器的更多相关文章

  1. 从零开始学习PYTHON3讲义(十四)写一个mp3播放器

    <从零开始PYTHON3>第十四讲 通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏.随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作. ...

  2. 小型音乐播放器插件APlayer.js的简单使用例子

      本篇博客将会给出一个小型音乐播放器插件APlayer.js的使用例子.关于APlayer.js的具体介绍和Github地址,可以参考: https://github.com/MoePlayer/A ...

  3. MP3播放器团队项目

    一.设计思路 程序要求能播放MP3文件,因此需调用库中的播放方法:右键工具箱选择项,添加com组件,选择window media player后工具箱就会多一个控件,然后拖到窗体中就OK了.另在窗体中 ...

  4. 你也可以用java的swing可以做出这么炫的mp3播放器_源码下载

    I had published the blog : 你用java的swing可以做出这么炫的mp3播放器吗? and to display some screenshots about this M ...

  5. 你用java的swing可以做出这么炫的mp3播放器吗?

    这个mp3播放器是基于java的swing编写的,我认为界面还是可以拿出来和大家看一看评一评. 先说说创作的初衷,由于前段时间工作不是很忙,与其闲着,还不如找一些东西来给自己捣腾捣腾,在 之前写的 j ...

  6. MP3播放器的实现

    今天,基本上实现了MP3播放器的基本功能,现在总结一下. 首先,下载服务器端的MP3列表,这里用到了下载技术和解析XML文件技术. 下载参考(http://blog.csdn.net/huim_lin ...

  7. 安卓MP3播放器开发实例(1)之音乐列表界面

    学习安卓开发有一年了,想想这一年的努力,确实也收获了不少.也找到了比較如意的工作. 今天准备分享一个以前在初学阶段练习的一个项目.通过这个项目我真正的找到了开发安卓软件的感觉,从此逐渐步入安卓开发的正 ...

  8. 开源mp3播放器--madplay 编译和移植 简记

    madplay是一款开源的mp3播放器. http://madplay.sourcearchive.com/ 下面简单记录一下madplay的编译与移植到ARM开发板上的过程 一.编译x86版本的ma ...

  9. 基于Stm32的MP3播放器设计与实现

    原创博文,转载请注明出处 这是我高级电子技术试验课做的作业,拿来共享一下.项目在安福莱例程基础之上进行的功能完善,里面的部分内容可参考安福莱mp3例程.当然用的板子也是安福莱的板子,因为算起来总共做了 ...

随机推荐

  1. Linux 多线程通信

    摘自资料(linux 与Windows不同) 线程间无需特别的手段进行通信,由于线程间能够共享数据结构,也就是一个全局变量能够被两个线程同一时候使用.只是要注意的是线程间须要做好同步,一般用mutex ...

  2. java读文件的几个类

    链接地址:http://blog.sina.com.cn/s/blog_407a68fc0100f628.html 最初Java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Wri ...

  3. ITextSharp 初次接触

    官网:http://www.itextpdf.com/  (英文好的建议看这里) 下面我就对itextsharp做一个初步的介绍,并把最近封装的一个用于生成pdf的类库提供给需要的朋友,对于大神你可以 ...

  4. Python 第十二篇:HTML基础

    一:基础知识: HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可 ...

  5. 解决Spring中singleton的Bean依赖于prototype的Bean的问题

    在spring bean的配置的时候,可能会出现一个singleton的bean依赖一个prototype的bean.因为singleton的bean只有一次初始化的机会,所以他们的依赖关系页只有在初 ...

  6. 分享,iOS国家手机区号代码.plist

    APP注册需要手机号码的时候,如果有在其他国家的时候需要填写手机区号 一份有国家名字和区号的plist 参照微信注册的时候 格式是 <Array> <Array> <Ar ...

  7. Delphi语言最好的JSON代码库 mORMot学习笔记1

    mORMot没有控件安装,直接添加到lib路径,工程中直接添加syncommons,syndb等到uses里 --------------------------------------------- ...

  8. oschina开源硬件其它开源,开源硬件

    硬件驱动/工具 25Linux内核 101桌面环境 40开源字体 58嵌入式操作系统 33输入法 110开源硬件 57开源图书 5开源家居 17物联网 87开源货币/比特币 32NASA 开源项目 1 ...

  9. WPF-22:WPF绘制五角星改进版(增加半个五角星的绘制)-修改bug

    之前用坐标画多边形的方法,绘制五角星.今天调试时发现当时写的时候有bug,修改一下. 原文: http://blog.csdn.net/yysyangyangyangshan/article/deta ...

  10. Vmware虚拟机下三种网络模式配置

    VMware虚拟机有三种网络模式,分别是Bridged(桥接模式).NAT(网络地址转换模式).Host-only(主机模式). VMware workstation安装好之后会多出两个网络连接,分别 ...