准备三张图片,名字分别为: 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. BZOJ 1263: [SCOI2006]整数划分( 高精度 )

    yy一下发现好像越小越好...分解成3*3*3*3……这种形式是最好的...然后就是高精度了 ----------------------------------------------------- ...

  2. php __autoload使用

    官方介绍: void __autoload ( string $class ) 你可以通过定义这个函数来启用类的自动加载. 转载一篇文章: PHP autoload机制详解 (1) autoload机 ...

  3. 设计模式(八)装饰器模式Decorator(结构型)

    设计模式(八)装饰器模式Decorator(结构型) 1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性.如果已经存在的一个类缺少某些方法 ...

  4. oschina程序开发

    程序开发 102脚本编程语言 36地图相关 7Epub电子图书工具 109UI组件库 16代码生成工具 25SVG开发包 17推荐引擎 3指纹识别 23拼音转换工具包 24蓝牙开发 295GUI开发框 ...

  5. aliyun 主机Nginx 上配置Drupal 伪静态

    网上找了好久没有正确的,后面直接在http://wiki.nginx.org/Drupal 上找到原文.但原文中复制过来会出现个 'root' rewrite directive is duplica ...

  6. R语言RJava安装步骤

     1.安装JDK 2.在R下运行install.packages("rJava") 2.环境变量设置 CLASSPATH=xxx\R-xxx\library\rJava\jri ...

  7. .NET Framework 4.5新特性

    前言 .Net FrameWrok的每个版本都要他的新特性的加入,比如,NET1.1中的委托,NET2.0中的泛型,NET3.0中的Linq,.NET4.0中的动态类型,那么.NET Framewor ...

  8. Robot Framework与Web界面自动化测试学习笔记:定位到新窗口

    在页面操作中,有时会需要打开新的窗口(新的网页不在当前窗口显示,而是在新的tab页显示), 比如利用  window.open("newurl") 或者  <a href=& ...

  9. mockito中两种部分mock的实现,spy、callRealMethod

    什么是类的部分mock(partial mock)?A:部分mock是说一个类的方法有些是实际调用,有些是使用mockito的stubbing(桩实现). 为什么需要部分mock? A:当需要测试一个 ...

  10. Java 多线程-生产者、消费者

    一.整体代码 ThreadDemo.java public class ThreadDemo { public static void main(String[] args) { Godown god ...