首页 > 代码库 > Android实现音乐播放器(一)

Android实现音乐播放器(一)

  Graphical User Interface

  本篇文章记录了我实现Android简单音乐播放器的过程,(一)中介绍了怎么构建音乐播放器的前端页面。首先大家看一下,界面最后是这样的(界面有点粗陋)

技术分享

  音乐文件列表是从SD卡中读取出来的。

  首先我们先在Layout里面创建Music Player的GUI,diagram如下图所示:

技术分享

根据diagram我们在activity_main.xml写出如下代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.lab5.MainActivity"
    tools:ignore="MergeRootFrame" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="350dp" >
    </ListView>

    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_horizontal" >

        <Button
            android:id="@+id/play"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Play" />

        <Button
            android:id="@+id/pause"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Pause" />

        <Button
            android:id="@+id/stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Stop" />
    </LinearLayout>

</LinearLayout>

技术分享

如果你写好了XML,大致布局就是这样子的啦。接下来我们要做的工作就是读取SD卡里面的内容,第一步,先push音乐文件到虚拟机的SD卡里面。

重要的事情提前说:在create AVD的时候一定记得要分配SDCard Size!!

技术分享

1、配置ADB环境&&push音乐文件

找到adb.exe的路径,你可以在桌面右键eclipse,然后找到“打开文件所在位置”,adb就在sdk\platform-tools里,把路径复制出来。桌面-我的电脑-右键-属性-高级系统设置-环境变量-用户变量-path

技术分享

点击编辑,在path后面+“;”+adb路径,记得加分号和前面区分开,点击确定,一直确定下来就好了,这里说的是win10的配置方式,其他操作系统参考百度经验。接下来我们就可以用命令行的方式push音乐带SDCard了。

WIN+R打开运行,输入cmd打开命令行窗口,我们先进入虚拟机的SDCard里面看一下,前提必须是有SDcard读写的权限,敲入adb shell,enter后敲入“# mount -o remount rw /”enter后,敲入exit退出就可以了,然后再次打开命令窗口,依次

输入adb shell-cd mnt-cd sdcard-ls,查看sdcard里面的内容。

cd: call director;

ls: list director contents;

mkdir:make a new directory;

技术分享

我们可以看到SDcard文件夹下有很多子文件夹,系统默认建好的,我们看到一个Music文件夹,我们把音乐放到这里面就行了,你也可以用命令mkdir+文件名,在SDCard下新建一个子文件夹。然后退出命令窗口。开始push了,鸡冻不!首先还是adb shell,enter后输入 adb push C:\CloudMusic\chuanshuo.mp3 /mnt/sdcard/Music/ 回车后看到出现上传的速度就代表成功了。前面是我的音乐文件所在的位置,空格后是要复制到的AVD的位置。都上传完毕后可以用上面查看sdcard的方式查看Music文件夹列表。

技术分享

2、好了,现在sdcard里面已经有音乐文件了,接下来我们在 AndroidManifest清单文件中,加上读写sdcard的xml代码:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

技术分享

 

3、MainActivity中的代码

public class MainActivity extends Activity {
    ArrayList<String> files = new ArrayList<String>();// 存歌曲名字的数组
    ListView lv;// 定义一个listview并且和布局里面的listview联系起来

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv = (ListView) findViewById(R.id.listView);
        /* 用于ListView的适配器 */
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_expandable_list_item_1, getData());
        /* 将ArrayAdapter添加到ListView对象中 */
        lv.setAdapter(adapter);

    }

    private ArrayList<String> getData() {
        File sdcardDir = new File("mnt/sdcard/Music");
        File[] mp3s = sdcardDir.listFiles();
        if (mp3s == null || mp3s.length == 0) {
            Toast.makeText(getApplicationContext(), "no file",
                    Toast.LENGTH_LONG).show();
        } else {
            for (int i = 0; i < mp3s.length; i++) {
                files.add(mp3s[i].getName());
            }
        }

        return files;

    }

}

4、运行下就OK了。

 

Android实现音乐播放器(一)