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

android开发_mp3_player音乐播放器

作者头像
Hongten
发布2018-09-13 16:02:37
1.2K0
发布2018-09-13 16:02:37
举报
文章被收录于专栏:HongtenHongten

新建项目:

代码语言:javascript
复制
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
复制
 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
复制
 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
复制
 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
复制
  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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档