android開發_mp3_player音樂播放器


新建項目:

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

 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

 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

 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

  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 CardFile

Hardwarenew -- >SD Card support

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

點擊Apply,再點擊ok

這樣androidsdcard就在eclipse中配置好了。

啟動剛才配置好的模擬器AVD2.3.1,打開File Explorer,就會出現sdcard,點擊右上角的導入圖標,把shiqi.mp3導入進去。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM