准备三张图片,名字分别为: 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. iOSAPP启动时实现加载广告

    现在很多APP在启动的时候都在加载广告,现在也很流行,主要是盈利啊.笔者也做了很多关于广告的事情.现在记录下自己在APP启动的时候,怎么加载广告的. 下面总结下广告加载的三种方式 1.现在很多APP的 ...

  2. [Swust OJ 1126]--神奇的矩阵(BFS,预处理,打表)

    题目链接:http://acm.swust.edu.cn/problem/1126/ Time limit(ms): 1000 Memory limit(kb): 65535 上一周里,患有XX症的哈 ...

  3. [置顶] 63行代码完美实现html5 贪吃蛇游戏

    以前也很少关注html5,感觉选择html已经慢慢成为趋势,想了解下.就找了个游戏学习了,写完这个游戏感觉html5和js结合很紧密,如果js不是特别好.估计需要先补习下js,这个只是个人的建议,不一 ...

  4. CSS - 解决使用浮动,父窗体不能撑高问题

    浮动的父级元素一定要用 clear 清除浮动,否则高度会无法撑开.

  5. iOS开发中关于本地数据中SQLite数据库常用的SQL语句

    创建表 CREATE TABLE IF NOT EXISTS "student" ("number" INTEGER PRIMARY KEY AUTOINCRE ...

  6. redis安装及数据类型简介(string、list、set、sorted_set、hash)

    一:简介: redis国内最大的案例--->新浪微博 memcache:是key-value数据库 数据类型:只支持key value数据 过期策略:支持 持久化:不支持(可以通过三方程序) 主 ...

  7. Python 第七篇:异步IO\数据库\队列\缓存

    Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko SSH Tws ...

  8. Orleans is a framework

    Introduction Orleans is a framework that provides a straightforward approach to building distributed ...

  9. Server是如何完成针对请求的监听、接收与响应1

    Server是如何完成针对请求的监听.接收与响应的[上] Server是ASP .NET Core管道的第一个节点,负责完整请求的监听和接收,最终对请求的响应同样也由它完成.Server是我们对所有实 ...

  10. ie6背景透明的设置方法 ie6背景颜色透明和png图像透明解决方法

    IE6浏览器,让我们又爱又恨.爱它的是,可以让我们写的代码的时候,可以更标准,恨的是,它有太多无厘头的IE6常见bug(详情点击),让我们焦头烂额.现在现在用百度浏览器调查,国内占有率不到6%了,但是 ...