准备三张图片,名字分别为: 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. python下的web服务器模块

    python下的web服务模块有三种: BaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler SimpleHTTPS ...

  2. ThinkPHP - 缓存使用

    用法: 需要使用不同的缓存方式的时候 需要重新初始化,如果不初始化直接调用的话,则会按照系统配置自动初始化.初始化的返回值,可以直接操作缓存: $cache = cache(array('type'= ...

  3. lnmp-zabbix

    wget http://down1.chinaunix.net/distfiles/freetype-2.4.7.tar.bz2 tar -jxvf freetype-2.4.7.tar.bz2 cd ...

  4. 配置系统引导启动SuperScoekt

    配置系统引导启动SuperScoekt SuperSocket源码解析之启动过程 一 简介 这里主要说明从配置系统引导启动SuperScoekt作为应用程序,且以控制台程序方式启动 二 启动过程 2. ...

  5. java基础之注解

    包含成员变量及方法的注解称之为元数据, 不包含任何成员的注解称之为标记. 用@interface定义注解, 使用类似于接口方法的方式来定义注解的属性,其中返回值成为属性的类型,方法名为属性的名称. p ...

  6. 一个RPC的demo

    从下面的例子中可以看到,Consumer(client)的代码中引用了Provider部分的class,本例中是 com.provider.EchoServiceImpl和com.provider.E ...

  7. zabbix 添加主机接口

    http://192.168.32.101:3000/api/zabbix/add_Host?env=test&host=zjtest9-app&ip=192.168.32.250&a ...

  8. 常见makefile写法

    原文地址:blog.csdn.net/ghostyu/article/details/7755177 1.目标名称,摆脱手动设置目标名称 TARGET = $(notdir $(CURDIR)) al ...

  9. mongodb副本集自动切换修复节点解决方案

    副本集部署 1.启动mongod 在每台运行mongod服务的机器上增加配置文件/etc/mongodb-rs.conf,内容为: [root@MongodbF-A etc]# vi /etc/mon ...

  10. vim-ctags-taglist-netrw

    vim配置 在~/.vimrc文件里配置例如以下内容.或者在/etc/vim/vimrc中进行全局配置,经常使用配置例如以下: syntax on set tabstop=4 set nu set s ...