准备三张图片,名字分别为: 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. iOS原生App与H5页面交互笔记

    文/MikeZhangpy(简书作者)原文链接:http://www.jianshu.com/p/4ed3e5ed99c6著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 最近在做一个项 ...

  2. BZOJ 2157: 旅游( 树链剖分 )

    树链剖分.. 样例太大了根本没法调...顺便把数据生成器放上来 -------------------------------------------------------------------- ...

  3. USACO March. 2012

    Connect the Cows Times17 水题 Landscaping Flowerpot Tractor 广搜 搜到边界就可以终止了 没什么难度 #include <stdio.h&g ...

  4. Content Providers的步骤,来自官网文档

    Content Providers In this document Content provider basics Querying a content provider Modifying dat ...

  5. [转] iOS (OC) 中 KVC 与 KVO 理解

    转自: http://magicalboy.com/kvc_and_kvo/ KVC 与 KVO 是 Objective C 的关键概念,个人认为必须理解的东西,下面是实例讲解. Key-Value ...

  6. 网络爬虫 kamike.collect

    Another Simple Crawler 又一个网络爬虫,可以支持代理服务器的FQ爬取. 1.数据存在mysql当中. 2.使用时,先修改web-inf/config.ini的数据链接相关信息,主 ...

  7. 多模块Maven项目怎样使用javadoc插件生成文档

    需求 近期要对一个项目结构例如以下的Maven项目生成JavaDoc文档. Project                         |-- pom.xml                   ...

  8. WinForm 使用皮肤,且单击按更换皮肤。

    运行效果: 首先把DLL程序集文件和SSK皮肤文件放在要运行程序的DEBug文件夹下,然后引入引用. 之后可以在程序里写代码了. private void Form2_Load(object send ...

  9. 使用ant的war任务打包j2ee web项目

    <?xml version="1.0" encoding="UTF-8"?> <project name="antwebprojec ...

  10. 演练2-2:Guestbook示例应用程序

    为使Guestbook应用程序有用,我们需要为用户提供一些提交数据的方式,将这些数据存储起来,以便稍后进行查看.为了达到这一目标,我们打算对应用程序添加一个数据库,将其作为该留言簿的后台存储库. 1. ...