android音乐播放器案例,Android MediaPlayer实现音乐播放器实例代码

Android MediaPlayer实现音乐播放器

1、布局文件

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:id="@+id/hint"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:padding="10px"

android:text="单击“开始”按钮播放音频" />

android:id="@+id/linearLayout1"

android:layout_width="match_parent"

android:layout_height="wrap_content" >

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="播放" />

android:id="@+id/button2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:enabled="false"

android:text="暂停" />

android:id="@+id/button3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:enabled="false"

android:text="停止" />

2、MainActivity的成员变量

private MediaPlayer player;//MediaPlayer对象

private boolean isPause = false;//是否暂停

private File file;//要播放的音频文件

private TextView hint;//声明显示提示信息的文本框

3、onCreate()方法中获取组件

final Button button1 = (Button)findViewById(R.id.button1);//获取“播放”按钮

final Button button2 = (Button)findViewById(R.id.button2);//获取“暂停/继续”按钮

final Button button3 = (Button)findViewById(R.id.button3);//获取“停止”按钮

hint = (TextView)findViewById(R.id.hint);//获取用于显示提示信息的文本框

file = new File("/storage/emulated/0/qqmusic/song/乔维怡 - 白月光[mqms2].mp3");//获取要播放的文件

if(file.exists()){

player = MediaPlayer.create(this, Uri.parse(file.getAbsolutePath()));//创建MediaPlayer独享

}else{

hint.setText("要播放的音频文件不存在!");

button1.setEnabled(false);

return;

}

4、编写play()方法

private void play(){

try {

player.reset();

player.setDataSource(file.getAbsolutePath());//重新设置要播放的音频

player.prepare();//预加载音频

player.start();//开始播放

hint.setText("正在播放音频.....");

} catch (Exception e) {

e.printStackTrace();

}

}

5、为MediaPlayer对象添加监听事件,播完重新播放

player.setOnCompletionListener(new OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer mp) {

play();//重新开始播放

}

});

6、为播放添加单击事件监听器

button1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

play();//开始播放音乐

if(isPause){

button2.setText("暂停");

isPause = false;//设置暂停标记变量的值为false

}

button2.setEnabled(true);//“暂停/继续”按钮可用

button3.setEnabled(true);//"停止"按钮可用

button1.setEnabled(false);//“播放”按钮不可用

}

});

7、在“暂停/继续”按钮添加单击事件监听器

button2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if(player.isPlaying()&&!isPause){

player.pause();//暂停播放

isPause = true;

((Button)v).setText("继续");

hint.setText("暂停播放音频...");

button1.setEnabled(true);//“播放”按钮可用

}else{

player.start();//继续播放

((Button)v).setText("暂停");

hint.setText("正在播放音频...");

isPause = false;

button1.setEnabled(false);//“播放”按钮不可用

}

}

});

8、停止按钮

button3.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

player.stop();//停止播放

hint.setText("停止播放音频...");

button2.setEnabled(false);//“暂停/继续”按钮不可用

button3.setEnabled(false);//“停止”按钮不可用

button1.setEnabled(true);//“播放”按钮可用

}

});

9、重写Activity的onDestroy()方法

@Override

protected void onDestroy() {

if(player.isPlaying()){

player.stop();//停止音频的播放

}

player.release();//释放资源

super.onDestroy();

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单边指数信号的特点_今日股市分析:上证指数若能守住3400,蓄力反弹就有戏...

昨日整体概况上涨:848只 下跌:3009只涨停:69只 跌停:12只昨天的上证指数低开低走,午后冲红又回落,另一边的创业板却是单边下行跌超3%,板块方向农业、洪水概念股、还有电力板块较强。按照昨日置顶…

万丰科技机器人排名_机器人系统集成“7宗最”

摘要:对于众多集成商而言,作为典型的“夹心饼奥利奥”,面对客户的各种要求,“不敢勉强你,只好为难自己”系真实写照。1、企业数量最多GGII统计数据显示,截至2019年年底,中国工业机器人产业企业数…

android 电池高温关机,Android 关机问题分析指南

本篇文章主要介绍 Android 开发中的 关机 部分知识点,通过阅读本篇文章,您将收获以下内容:1 . 确认是亮屏关机还是灭屏关机?关机时是否有播放关机动画?2 . 是直接关机还是关机后会自动重启?3.异常关机时,连…

android switch 未定义,在switch语句中初始化时未定义的变量?

问题本身就是一个明显的答案.无论如何,这是我的代码片段......switch(cSet)...case 8:{ //Special CharactersfinalSet special;char* charSet new char[special.size() 1];charSet[special.size()] 0; //Append null terminatormemcpy(charSet, special.c_str(), special.…

android 克隆对象,克隆会破坏单例对象吗?

假设有这样一个场景,如果复制的目标对象恰好是单例对象,那会不会破坏单例对象呢?当然,我们在已知的情况下肯定不会这么干,但如果发生了意外怎么办?不防来修改一下代码。public class ConcretePrototype imp…

转网口显示未识别的网络_已有1700万用户携号转网 超99%用户1小时内办结

携号转网是利国利民的大举措,受到了很多电信用户的拥护和支持。12月15日,工信部副部长刘烈宏在某会议上进行报告指出,目前我国 “携号转网”服务已经累计有 1700 万用户完成携转,一小时携转成功办结率超过 99%。已有1700万用户携号…

adb 更新 android sdk,[转载]安装Android时SDK AVD MANAGER时更新报错的解决办法

最近安装Android SDK时,发现更新时出现“A folder failed to be renamed ormoved.”等类似错误。经过测试和G后发现解决办法目前有两种情况:1、确实是因为打开了相关目录或者其他程序占用率文件夹句柄。关闭相关资源管理器或者关闭相关程序即可&#xff…

2020.2idea怎么创建html项目_陈肆横项目日记:百度百科怎么创建自己的名字

百度百科是一个介绍人物很好的平台,很多的都想创造属于自己的百度百科。而人物百科词条,是百度百科专门为知名人物提供个人信息展示的平台。创建一个属于自己的百度百科词条,就相当于拥有了一张名片,不仅有着影响力与知名度的传播…

android c++ gizp 调用 so,使用ndk-build编译 android调用的so库

前沿编译so的方法有两种方法第一种就是编写原生的makefile文件利用gcc进行编译,这里我讲解的是另外一种。采用NDK提供的ndk-build编译。简介使用ndk编译的时候需要介绍它的脚本文件,Android.mk和Application.mk,但是Application.mk是可选的,用…

elctron项目_electron项目结构介绍

#项目结构my-project├─ .electron-vue(webpack配置文件)│ └─ build.js(生产环境构建代码)│ └─ dev-client.js(热加载相关)│ └─ dev-runner.js(开发环境启动入口)│ └─ webpack.main.config.js(主进程配置文件)│ └─ webpack.renderer.config.js(渲染进程配…

无法启动mysqll1006_CentOS7下MySQL服务启动失败原因及解决方法

在重启阿里的CentOS7服务器后,重启MySQL 出现错误Starting mysqld (via systemctl):Job for mysqld.service failed because the control process exited with error code.See "systemctl status mysqld.service" and "journalctl -xe" fordetails.[FAILED…

html5判断多选框是否选择的函数,复选框(checkbox)、多选框

1、需求分析可同时选中多个选项,实现全选、全不选、反选等功能。2、技术分析基础的HTML、CSS、JavaScript。3、详细分析3.1 HTML部分图示是一个列表加底部一段文字说明,列表包含三个部分,整体是一个多选列表,上部是总的选项&#…

layer调用父页面方法_Ruby for SketchUp之图层【Layer】

我们学习了群组、组件及组件定义,今天来看看图层【Layer】,在Sketchup2020版本中已经更名为“标记”,如图那么图层在我们建模过程中能带来哪些便利呢?可以快速的隐藏同一图层内所有东西,而不需要逐一选择并右键点击隐藏…

html盒子有哪些属性,盒子模型有哪些属性 在html5中哪些元素具有盒子模型

HTML盒模型基本属性有哪些CSS盒子模型就是在CSS技术所使用的一种思维模型。CSS假定所有的HTML文档元素都生成一个描述该元素在HTML文档布局中所占空间的矩形元素框,可以形象地将其看作是一个盒子。通过定义一系列与盒子相关的属性,可极大地丰富和促进各个…

huffman编码的程序流程图_F28379D之CLB解码多摩川编码器2——LIB版例程讲解(原创)...

我在第一篇文章中已经跟大家介绍过379解码多摩川编码器的一些入手小知识,链接如下TMS320F28379D之CLB解码多摩川编码器1——入手小知识(原创)请大家一定要看入手小知识,再来看例程分析。今天跟大家分析一下TI的官方例程。首先&…

html统计表合并单元格的快捷键,word怎样设置合并单元格快捷键

word2010中合并单元格的快捷键是什么?求解答。合并单元格没有快捷键,不过有个f4是重复上一步操作,所以你要合并多个单元格,那么你可以先点一合并单元格,然后选定你要合并的区域。WORD合并单元格的快捷键怎么设置word合并单元格快…

fcm 服务器接入 golang_Golang 写的即时通讯服务器 im(服务组件形式)

简要介绍im是一个即时通讯服务器,代码全部使用golang完成。主要功能1.支持tcp,websocket接入2.离线消息同步3.单用户多设备同时在线4.单聊,群聊,以及超大群聊天场景5.支持服务水平扩展gim和im有什么区别?gim可以作为一…

html 手机分辨率,移动端各种分辨率手机屏幕----适配方法集锦

1.使用viewport,html文件中在内添加meta,简单粗暴:2.加判断复杂点的viewport,可以封装成一个js,每次新建html时调用.js即可:var phoneWidth parseInt(window.screen.width);var phoneScale phoneWidth/75…

橡胶支座抗压弹性模量计算公式_隔震支座的这些力学特性您都掌握了吗?

隔震支座叠层橡胶隔震支座,是隔震设计中应用最为广泛的隔震装置。了解隔震支座的力学特性,在软件中设置正确的参数,是做好隔震设计最基本的前提。那么,隔震支座的这些特性您都掌握了吗?叠层橡胶隔震支座叠层橡胶隔震支…

综合基础知识计算机,计算机综合基础知识总结.doc

计算机综合基础知识总结计算机专业知识试题计算机专业知识试题1.???? 一个字节包含的二进制位数是(?? )。A. 8位???? B. 16位???????????????? C. 32位???????????????? D. 256位2.???? 既可作为输入又可作为输出设备的是(???…