小型Mp3播放器
准备三张图片,名字分别为: 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播放器的更多相关文章
- 从零开始学习PYTHON3讲义(十四)写一个mp3播放器
<从零开始PYTHON3>第十四讲 通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏.随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作. ...
- 小型音乐播放器插件APlayer.js的简单使用例子
本篇博客将会给出一个小型音乐播放器插件APlayer.js的使用例子.关于APlayer.js的具体介绍和Github地址,可以参考: https://github.com/MoePlayer/A ...
- MP3播放器团队项目
一.设计思路 程序要求能播放MP3文件,因此需调用库中的播放方法:右键工具箱选择项,添加com组件,选择window media player后工具箱就会多一个控件,然后拖到窗体中就OK了.另在窗体中 ...
- 你也可以用java的swing可以做出这么炫的mp3播放器_源码下载
I had published the blog : 你用java的swing可以做出这么炫的mp3播放器吗? and to display some screenshots about this M ...
- 你用java的swing可以做出这么炫的mp3播放器吗?
这个mp3播放器是基于java的swing编写的,我认为界面还是可以拿出来和大家看一看评一评. 先说说创作的初衷,由于前段时间工作不是很忙,与其闲着,还不如找一些东西来给自己捣腾捣腾,在 之前写的 j ...
- MP3播放器的实现
今天,基本上实现了MP3播放器的基本功能,现在总结一下. 首先,下载服务器端的MP3列表,这里用到了下载技术和解析XML文件技术. 下载参考(http://blog.csdn.net/huim_lin ...
- 安卓MP3播放器开发实例(1)之音乐列表界面
学习安卓开发有一年了,想想这一年的努力,确实也收获了不少.也找到了比較如意的工作. 今天准备分享一个以前在初学阶段练习的一个项目.通过这个项目我真正的找到了开发安卓软件的感觉,从此逐渐步入安卓开发的正 ...
- 开源mp3播放器--madplay 编译和移植 简记
madplay是一款开源的mp3播放器. http://madplay.sourcearchive.com/ 下面简单记录一下madplay的编译与移植到ARM开发板上的过程 一.编译x86版本的ma ...
- 基于Stm32的MP3播放器设计与实现
原创博文,转载请注明出处 这是我高级电子技术试验课做的作业,拿来共享一下.项目在安福莱例程基础之上进行的功能完善,里面的部分内容可参考安福莱mp3例程.当然用的板子也是安福莱的板子,因为算起来总共做了 ...
随机推荐
- javascript特效:会随着鼠标而动的眼睛
这个特效非常简单,其中眼球和眼珠都是特定的图片.只要掌握好距离坐标就没问题.我就直接贴代码,有兴趣的朋友可以自己复制下来运行一下,下面的眼睛图像就是我的文件用到的图像,比较难看..我就把我的代码贴出来 ...
- iOS签发者无效
IOS开发证书全部变成无效,如下图 打包提示错误 解决方法: 1. 下载https://developer.apple.com/certificationauthority/AppleWWDRCA.c ...
- Intent过滤,intent-filter
Intent过滤 编写:kesenhoo - 原文:http://developer.android.com/training/basics/intents/filters.html 前两节课主要讲了 ...
- System.IO
I/O 1.文件操作:File (1)void AppendAllText(string path, string contents) (2)bool Exist ...
- keytool 生成 Android SSL 使用的 BKS
我是在Mac(JDK 1.6) 环境下生成的,Windows 也应该通用; 首先要从CA那里申请来签名的证书,我的是crt格式的; 然后使用如下命令,对应的BcProvider 是 bcprov-e ...
- QTableWidget的用法总结
在使用Qt不多的日子里,已经两次用到了QTableWidget这个控件,也慢慢的习惯和喜欢上了它.再使用QTableWidget的时候,已不像刚开始使用时的迷茫.嗯嗯.现在就来总结总结我与QTable ...
- POJ 2777 线段树基础题
题意: 给你一个长度为N的线段数,一开始每个树的颜色都是1,然后有2个操作. 第一个操作,将区间[a , b ]的颜色换成c. 第二个操作,输出区间[a , b ]不同颜色的总数. 直接线段树搞之.不 ...
- weblogic公布的项目用途myeclipse正常启动,点击startWeblogic.cmd报错解决方案
今天在做项目中遇到的问题.使用weblogic公布的项目,使用myeclipse正常启动,但点击startWeblogic.cmd会报错.我提出了一个class not found.楚是什么问题.后来 ...
- python下载文件(图片)源码,包含爬网内容(爬url),可保存cookie
#coding=utf-8 ''' Created on 2013-7-17 @author: zinan.zhang ''' import re import time import httplib ...
- 【转】centOS上安装redis+phpredis2.2.4扩展
原文链接:http://www.cnblogs.com/xsi640/p/3756130.html 我原来的安装方式:http://www.cnblogs.com/wuling129/p/464738 ...