前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >android开发_mp3_player音乐播放器

android开发_mp3_player音乐播放器

作者头像
Hongten
发布于 2018-09-13 08:02:37
发布于 2018-09-13 08:02:37
1.3K00
代码可运行
举报
文章被收录于专栏:HongtenHongten
运行总次数:0
代码可运行

新建项目:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 New Android Project->
2 Project name:androidPlayer
3 Build Target:Android 2.2
4 Application name: androidPlayer
5 Package name:com.b510
6 Create Activity:PlayActivity
7 Min SDK Version:9
8 Finish

项目结构:

运行效果:

代码部分:

AndroidManifast.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3       package="cn.itcast.audio"
 4       android:versionCode="1"
 5       android:versionName="1.0">
 6     <uses-sdk android:minSdkVersion="8" />
 7 
 8     <application android:icon="@drawable/icon" android:label="@string/app_name">
 9         <activity android:name=".PlayActivity"
10                   android:label="@string/app_name">
11             <intent-filter>
12                 <action android:name="android.intent.action.MAIN" />
13                 <category android:name="android.intent.category.LAUNCHER" />
14             </intent-filter>
15         </activity>
16 
17     </application>
18     <!-- sdcard权限 --> 
19     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
20   </uses-permission>
21 </manifest>

strings.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3     <string name="hello">Hello World, PlayActivity!</string>
 4     <string name="app_name">音乐播放器</string>
 5     <string name="filename">文件名称</string>
 6     <string name="play">播放</string>
 7     <string name="pause">暂停</string>
 8      <string name="continue1">继续</string>
 9     <string name="reset">重播</string>
10     <string name="stop">停止</string>
11     <string name="musicname">shiqi.mp3</string>
12 </resources>

main.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical"
 4     android:layout_width="fill_parent"
 5     android:layout_height="fill_parent"
 6     >
 7     <TextView  
 8         android:layout_width="fill_parent" 
 9         android:layout_height="wrap_content" 
10         android:text="@string/filename"
11         />
12     <EditText
13         android:id="@+id/filename"  
14         android:layout_width="fill_parent" 
15         android:layout_height="wrap_content"
16         android:text="@string/musicname" 
17     />
18     <LinearLayout
19         android:orientation="horizontal"
20         android:layout_width="fill_parent"
21         android:layout_height="wrap_content"
22     >
23         <Button
24             android:id="@+id/play"
25             android:layout_width="wrap_content"
26             android:layout_height="wrap_content"
27             android:text="@string/play"
28         />
29         <Button
30             android:id="@+id/pause"
31             android:layout_width="wrap_content"
32             android:layout_height="wrap_content"
33             android:text="@string/pause"
34         />
35         <Button
36             android:id="@+id/reset"
37             android:layout_width="wrap_content"
38             android:layout_height="wrap_content"
39             android:text="@string/reset"
40         />
41         <Button
42             android:id="@+id/stop"
43             android:layout_width="wrap_content"
44             android:layout_height="wrap_content"
45             android:text="@string/stop"
46         />    
47     </LinearLayout>
48 </LinearLayout>

PlayActivity.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  1 package com.b510;
  2 
  3 import java.io.File;
  4 import java.io.IOException;
  5 
  6 import android.app.Activity;
  7 import android.media.MediaPlayer;
  8 import android.os.Bundle;
  9 import android.os.Environment;
 10 import android.util.Log;
 11 import android.view.View;
 12 import android.view.View.OnClickListener;
 13 import android.widget.Button;
 14 import android.widget.EditText;
 15 
 16 public class MainActivity extends Activity {
 17     protected static final String TAG = "MainActivity";
 18     /** 文件名称 */
 19     private EditText et_filename;
 20     /** 播放按钮 */
 21     private Button btn_play;
 22     /** 暂停按钮 */
 23     private Button btn_pause;
 24     /** 重播按钮 */
 25     private Button btn_reset;
 26     /** 停止按钮 */
 27     private Button btn_stop;
 28     /** 得到文件名称 */
 29     private String filename;
 30     /** 定义一个播放器对象 */
 31     private MediaPlayer mediaPlayer;
 32     /** 保存当前音乐播放点 */
 33     private int currentPosition;
 34 
 35     /** Called when the activity is first created. */
 36     @Override
 37     public void onCreate(Bundle savedInstanceState) {
 38         super.onCreate(savedInstanceState);
 39         setContentView(R.layout.main);
 40         mediaPlayer = new MediaPlayer();
 41 
 42         et_filename = (EditText) findViewById(R.id.et_filename);
 43 
 44         btn_play = (Button) findViewById(R.id.btn_play);
 45         btn_pause = (Button) findViewById(R.id.btn_pause);
 46         btn_reset = (Button) findViewById(R.id.btn_reset);
 47         btn_stop = (Button) findViewById(R.id.btn_stop);
 48 
 49         btn_play.setOnClickListener(listener);
 50         btn_pause.setOnClickListener(listener);
 51         btn_reset.setOnClickListener(listener);
 52         btn_stop.setOnClickListener(listener);
 53     }
 54 
 55     /**
 56      * 当MainActivity调用onDestroy方法的时候</br>
 57      * 播放器释放资源
 58      */
 59     @Override
 60     protected void onDestroy() {
 61         super.onDestroy();
 62         mediaPlayer.release();
 63     }
 64 
 65     /**
 66      * 定义按钮的监听器
 67      */
 68     private OnClickListener listener = new OnClickListener() {
 69 
 70         public void onClick(View v) {
 71             Button button = (Button) v;
 72             try {
 73                 switch (v.getId()) {
 74                 case R.id.btn_play:
 75                     play();
 76                     break;
 77                 case R.id.btn_pause:
 78                     if (mediaPlayer.isPlaying()) {
 79                         mediaPlayer.pause();
 80                         button.setText(R.string.continues);
 81                     } else {
 82                         mediaPlayer.start();
 83                         button.setText(R.string.pause);
 84                     }
 85                     break;
 86                 case R.id.btn_reset:
 87                     if (mediaPlayer.isPlaying()) {
 88                         mediaPlayer.seekTo(0);
 89                     } else {
 90                         play();
 91                     }
 92                     break;
 93                 case R.id.btn_stop:
 94                     if (mediaPlayer.isPlaying()) {
 95                         mediaPlayer.stop();
 96                     }
 97                     break;
 98                 }
 99             } catch (IOException e) {
100                 Log.i(TAG, e.toString());
101             }
102         }
103     };
104     /**
105      * 把播放动作抽出来,当度定义为play方法
106      * @throws IOException
107      */
108     private void play() throws IOException {
109         filename = et_filename.getText().toString();
110         File androidFile = new File(Environment.getExternalStorageDirectory(),
111                 filename);
112         mediaPlayer.reset();
113         mediaPlayer.setDataSource(androidFile.getAbsolutePath());
114         mediaPlayer.prepare();
115         mediaPlayer.start();
116     }
117 
118     /**
119      * 如果突然电话到来,此时就停止播放音乐
120      */
121     @Override
122     protected void onPause() {
123         super.onPause();
124         //如果音乐正在播放,则取得音乐的当前位置
125         if(mediaPlayer.isPlaying()){
126             currentPosition=mediaPlayer.getCurrentPosition();
127             mediaPlayer.stop();
128         }
129     }
130 
131     /**
132      * 如果电话结束了,就应该恢复当前播放
133      */
134     @Override
135     protected void onResume() {
136         super.onResume();
137         //如果当前的播放帧currentPosition>0并且播放音乐文件名称不为空
138         //就恢复当前播放,并且把currentPosition位置设置到0,以便下次使用
139         if(currentPosition>0&&filename!=null){
140             try {
141                 play();
142                 mediaPlayer.seekTo(currentPosition);
143                 currentPosition=0;
144             } catch (IOException e) {
145                 e.printStackTrace();
146             }
147         }
148     }
149 
150     /**
151      * 在系统杀死activity后,当用户接完电话后,会重新回到这个activity</br>
152      * 系统会自动帮我们创建这个activity,先执行onCreate()方法</br>
153      * 在执行onRestoreInstanceState()方法,我们在这个方法中</br>
154      * Bundle中保存的数据恢复
155      */
156     @Override
157     protected void onRestoreInstanceState(Bundle savedInstanceState) {
158         super.onRestoreInstanceState(savedInstanceState);
159         filename=savedInstanceState.getString("filename");
160         currentPosition=savedInstanceState.getInt("currentPosition");
161     }
162 
163     /**
164      * 当一些位置情况发生的时候,导致Activity不可见了</br>
165      * 系统可能会杀死掉这个activity,如果我们想再系统杀死activity</br>
166      * 之前缓存一些需要的数据,这里保存的数据是播放的文件和当前播放的位置
167      */
168     @Override
169     protected void onSaveInstanceState(Bundle outState) {
170         super.onSaveInstanceState(outState);
171         outState.putString("filename", filename);
172         outState.putInt("currentPosition", currentPosition);
173     }
174 }

============================================

android sdcard配置

步骤1:

mksdcard -l mycard 100M E:\android_sdcard.img   如果你的环境变量配置正确,输入这句命令就建立了一个100M的虚拟SD-Card。

命令分析:-l mycard ,-l 后面跟的是磁盘卷标,如g就代表g盘,卷标可以随便写自己喜欢的名字。

                 100M 为虚拟SD-card大小,可以写M(兆),也可以写K随自己喜欢,只要一个够自己用的大小就可以了,还要注意你放置虚拟card的空间,必须要大于你的虚拟card。

                 E:\android_sdcard.img   虚拟card目录和文件名,目录随自己喜欢放置,android_card.img虚拟card文件名,名字随自己喜欢写,后缀名也随自己喜欢随便命名,如(.abc)。

步骤2:

Eclipse中配置

SD Card:File

Hardware:new -- >SD Card support

6.2.window-- >Preferences-- >Android-- >Launch

点击Apply,再点击ok,

这样android的sdcard就在eclipse中配置好了。

启动刚才配置好的模拟器AVD2.3.1,打开File Explorer,就会出现sdcard,点击右上角的导入图标,把shiqi.mp3导入进去。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-11-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
POI 操作word
关于POI 操作word的基础知识在这个博客(http://elim.iteye.com/blog/2049110)中有非常清晰的解释,在这里我就不多解释了 
凯哥Java
2019/06/28
3.4K0
POI 操作word
C#使用NPOI进行word的读写
如果不进行页面大小的设置,默认是纵向的A4大小。横向的A4的页面大小 ,如果要纵向,宽高两个值调换即可。
zls365
2021/03/16
7.7K1
word导出03
 public static void exportWordImg(String wordpath,List<String> contentlist,String[] imglist) throws Exception{         exportQuestionWord t=new exportQuestionWord();         WordprocessingMLPackage wordMLPackage = t.createWordprocessingMLPackage();         MainDocumentPart mp = wordMLPackage.getMainDocumentPart();         ObjectFactory factory = Context.getWmlObjectFactory();         //图片页眉         //Relationship relationship =t.createHeaderPart(wordMLPackage, mp, factory);         //文字页眉         //Relationship relationship =t.createTextHeaderPart(wordMLPackage, mp, factory, "页眉", JcEnumeration.CENTER);         //t.createHeaderReference(wordMLPackage, mp, factory, relationship);         t.addParagraphTest(wordMLPackage, mp, factory,contentlist,imglist);         //t.addPageBreak(wordMLPackage, factory);         //t.createNormalTableTest(wordMLPackage, mp, factory);         //页脚         //relationship =t.createFooterPageNumPart(wordMLPackage, mp, factory);         //t.createFooterReference(wordMLPackage, mp, factory, relationship);         t.saveWordPackage(wordMLPackage, new File(wordpath));     }     public void addParagraphTest(WordprocessingMLPackage wordMLPackage,                                  MainDocumentPart t, ObjectFactory factory,List<String> contentlist,String[] imglist) throws Exception {         RPr titleRPr = getRPr(factory, "黑体", "000000", "30", STHint.EAST_ASIA,                 true, false, false, false);         RPr boldRPr = getRPr(factory, "宋体", "000000", "24", STHint.EAST_ASIA,                 true, false, false, false);         RPr fontRPr = getRPr(factory, "宋体", "000000", "22", STHint.EAST_ASIA,                 false, false, false, false);         P paragraph=factory.createP();         Text txt = null;         R run=null;         File file=null;         InputStream is=null;         if(contentlist!=null || contentlist.size()>0){         for (int i = 0; i < contentlist.size(); i++) {             if(contentlist.get(i).contains("22.发生肺水肿时的应急处理错误的是")){
Dlimeng
2023/06/29
2050
批量修改公式的字号和大小
MathType是一个由美国 Design Science 公司开发的强大的数学公式编辑器,它同时支持 Windows 和 Macintosh 操作系统,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号,帮助用户快速建立专业化的数学技术文档。
FreeRonin
2019/07/17
1.7K0
批量修改公式的字号和大小
.NET Core使用NPOI导出复杂Word详解
  最近使用NPOI做了个导出Word文档的功能,关于使用.NET Core 导出Word文档的方式有很多。最终我为什么选择了NPOI来实现了这个功能,首先是NPOI是一个开源,免费且容易上手的第三方框架(并且现在已支持.NET Core,GitHub源码地址:https://github.com/tonyqus/npoi)。因为之前使用NPOI导出Execl比较多,这次第一次使用NPOI 来导出Word文档还真没有什么头绪。首先看了下GItHub中的源码有一个简单Word导出的示例,然后在看了网上有很多关于NPOI导出Word文档的案例,发现一个特点网上的好像都差不多,对于我而言网上的这些案例完全能够实现我的这个功能,但是感觉看了网上这些案例对NPOI实例化段落,表格和设置相关样式不太清楚(可能是因为自己笨),并且假如使用网上的方法来实现我的功能的话代码量会比较大,而且感觉代码非常的冗余(我是一个追求代码简洁的人,怎么能够容忍这样的事情发生呢!),因此通过查阅了一些资料和自己的理解,把关于使用NPOI导出Word时所要涉及的一些段落,表格样式做了相关注释,和把段落和表格的创建实例,设置文字、字体、对齐方式都封装了起了(为了少写代码),文章末尾会附上一个完整的案例下载地址。
追逐时光者
2019/09/30
4.2K0
.NET Core使用NPOI导出复杂Word详解
iText的使用
首先要getInstance并open一个Document对象,该对象也就代表了这个文件:
LeoXu
2018/08/15
2.5K0
[实用][更新中]Java Apache POI 打印Word文档工具(含文本替换,动态表格功能)
你好!这是由一个刚毕业的学生,由于项目所需,需要通过Java后台的方式打印Word文档,因此在对大量能操作word的Java API中,选择了Apache POI。以下将简单分享一下这个在学习和开发这个基于POI的word文档打印工具时,一些心得:
RRT冻羊
2022/11/03
4.4K0
[实用][更新中]Java Apache POI 打印Word文档工具(含文本替换,动态表格功能)
clicaptcha中文点击验证码开发经验总结
  现在的验证码真是越来越高级了,12306 的找图验证码,极验的拖动式验证码,还有国外的一些黑科技,能智能判断你是不是机器人的验证码。   验证码的更新迭代让我突然对传统验证码一下子不满足了,出于挑战自我和对自己技能的修炼,我用了一周的时间写了一个简单的 demo ,然后又花了一周时间将其优化成插件的形式,于是 Clicaptcha 就诞生了。   简单介绍下 Clicaptcha ,它是由 click 和 captcha 这两个单子合并而成,顾名思义,这是一个点击验证码,那怎么个点击验证呢?整个操作流程
胡尐睿丶
2018/01/11
2.7K0
clicaptcha中文点击验证码开发经验总结
Java中用Apache POI生成excel和word文档
最近在做项目的过程中遇到了excel的数据导出和word的图文表报告的导出功能,最后决定用Apache POI来完成该项功能。本文就项目实现过程中的一些思路与代码与大家共享,同时,也作为自己的一个总结,以备后用。
牛老师讲GIS
2018/10/23
3.3K0
Java中用Apache POI生成excel和word文档
Java实现word文档在线预览,读取office(word,excel,ppt)文件
想要实现word或者其他office文件的在线预览,大部分都是用的两种方式,一种是使用openoffice转换之后再通过其他插件预览,还有一种方式就是通过POI读取内容然后预览。 一、使用openoffice方式实现word预览 主要思路是: 1.通过第三方工具openoffice,将word、excel、ppt、txt等文件转换为pdf文件 2.通过swfTools将pdf文件转换成swf格式的文件 3.通过FlexPaper文档组件在页面上进行展示 我使用的工具版本: openof:3.4.1 swfT
二十三年蝉
2018/05/09
38.3K4
教程 | Python 实现 Word 文档操作...
我们在Word中输入文字时,一般会先使用鼠标点击需要输入文字的位置,这个过程是获得了光标焦点。
昱良
2019/07/31
3.8K0
教程 | Python 实现 Word 文档操作...
python_docx制作word文档
Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。
py3study
2020/01/15
3.2K0
python_docx制作word文档
零代码编程:用ChatGPT批量设置Word文件格式
文件夹中有很多txt文本文件,要转换成word文件,且要批量设置一些文件格式,方便后续的打印。
AIGC部落
2024/06/24
3080
零代码编程:用ChatGPT批量设置Word文件格式
html可以转换成word_html显示word文档
项目后端使用了springboot,maven,前端使用了ckeditor富文本编辑器。目前从html转换的word为doc格式,而图片处理支持的是docx格式,所以需要手动把doc另存为docx,然后才可以进行图片替换。
全栈程序员站长
2022/11/08
8.4K0
html可以转换成word_html显示word文档
职场人必备的WORD排版十大技巧
1.页面设置快速进行调整 问:要对 Word 进行页面调整,通常大家采用的方法是选择“文件→页面设置”选项的方法进行,请问有没有更快速方便的方法呢? 答:有,如果要进行“页面设置”,只需用鼠标
用户1756920
2018/06/20
1.6K0
Python自动化办公 | 同事要我帮忙补写178份Word日报!别闹!
首先让我们来看看数据样本和输出文档的需求(敏感数据已做和谐处理):原始 excel 文件中有 n 个子表,每个子表为一天的数据,存在无记录和有记录(部门数 ≥ 1,每个部门记录数 ≥ 1)两种情况,需分别整理成两种日报,一为纯文本描述,二为附带表格的文档。
朱小五
2020/09/24
1K0
Python自动化办公 | 同事要我帮忙补写178份Word日报!别闹!
在线图片转换成word的方法_html 转word
项目后端使用了springboot,maven,前端使用了ckeditor富文本编辑器。目前从html转换的word为doc格式,而图片处理支持的是docx格式,所以需要手动把doc另存为docx,然后才可以进行图片替换。
全栈程序员站长
2022/11/04
20.4K0
在线图片转换成word的方法_html 转word
【API使用系列】Core Text专题
https://developer.apple.com/library/mac/#documentation/Carbon/Reference/CoreText_Framework_Ref/_index.html
江中散人_Jun
2022/03/08
9360
【API使用系列】Core Text专题
学会Python自动制作Word,将看到一个5天4位数的赚钱机会
周二推了一篇Python编辑ppt的文章,行哥告诉读者学会重复处理PPT接单兼职更加高效。因为Python是一种生产工具,掌握生产工具后就应该拿去尝试赚钱。
行哥玩Python
2020/07/14
1.2K0
学会Python自动制作Word,将看到一个5天4位数的赚钱机会
itext7史上最全实战总结
最近有个需求需要我用Java手动写一份PDF报告,经过考察几种pdf开源代码,最终选取了itext7,此版本为7.1.11,由于发现网上关于该工具的博文比较少,特别是实战博文几乎没有,在我踩完各种坑,最终把PDF成型后,打算把经验分享出来,本文通过摘录解释来说明,内容来自本人GitHub itext-pdf
老梁
2020/06/02
7.3K1
相关推荐
POI 操作word
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档