zoukankan      html  css  js  c++  java
  • 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导入进去。

  • 相关阅读:
    C++11学习笔记
    孙鑫MFC学习笔记20:Hook编程
    孙鑫MFC学习笔记19:动态链接库
    孙鑫MFC学习笔记18:ActiveX
    孙鑫MFC学习笔记17:进程间通信
    孙鑫MFC学习笔记16:异步套接字
    孙鑫MFC学习笔记:15多线程
    ionic2 使用slides制作滑动效果的类型选择栏
    JavaScript简明教程之Node.js
    ionic2实战-使用Chart.js
  • 原文地址:https://www.cnblogs.com/hongten/p/android_mp3_player.html
Copyright © 2011-2022 走看看