音乐播放器

一.插入要播放的音乐文件(这部分作业里并没有要求)

Android模拟器中添加歌曲的详细步骤:

 

点击Tools->Android->Android Device Monitor后到了以下界面:

里面有个mnt->adcard

右上方那个

选择就可以了

二.目前实现的界面

首页(安装在自己手机的截图)

这个界面的代码和原理都是比较简单的,难点是ListView这部分,最大的那个圆圈和第三个小点利用shape属性实现的

接下来是播放、暂停、终止,上一首、下一首的操作

重点代码:

首先定义数组(我导入了7首歌,方便后面的ListView的翻阅),然后进行获取SDK中的文件,从而获取音乐路径::

private void initMediaPlayer() {
        File file = new File(Environment.getExternalStorageDirectory(),musicName[currIndex]);
        try {
            player.setDataSource(file.getPath());//音频文件路径
            player.prepare();//让mediaPlayer进入准备状态
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

要获取权限:

Mainifest.xml获取权限:

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

java中的主要代码:

   public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch(requestCode){
            case 1:
                if (grantResults.length > 0 && grantResults [0] == PackageManager.PERMISSION_GRANTED){
                    initMediaPlayer();
                }else {
                    Toast.makeText(this, "拒绝权限无法使用程序",Toast.LENGTH_SHORT).show();
                    finish();
                }
                break;
            default:
        }
    }

  

播放,暂停、终止、上一首、下一首,先获取相关的ID,设置监听:

 public void onClick(View v) {
        switch(v.getId())
        {
            case R.id.favorite:
            {
                Toast.makeText(MainActivity.this,"已添加到我喜欢",Toast.LENGTH_LONG).show();
            }
            case R.id.start:
            {
                if(!player.isPlaying())
                {
                    player.start();
                }
                break;
            }
            case R.id.shangyishou:
            {
                if(currIndex<musicName.length)
                {
                    player.stop();
                    player.reset();
                    currIndex++;
                    initMediaPlayer();
                    player.start();
                }
                else
                {
                    Toast.makeText(MainActivity.this,"这已经是第一首歌了",Toast.LENGTH_LONG).show();
                }
                break;
            }
            case R.id.xiayishou:
            {
                if(currIndex>1)
                {
                    player.stop();
                    player.reset();
                    currIndex--;
                    initMediaPlayer();
                    player.start();
                }
                else
                {
                    Toast.makeText(MainActivity.this,"这已经是最后一首歌了",Toast.LENGTH_LONG).show();
                }
                break;
            }
            case R.id.pause:
            {
                if(player.isPlaying())
                {
                    player.pause();
                }
                break;
            }
            case R.id.stop:
            {
                if(player.isPlaying())
                {player.reset();
                    initMediaPlayer();
                }
            }
        }
    }

  这里面最难的是上一首歌下一首的设置,在进行下一首时,先判断数组的元素是否大于数组本身的长度,因为我的歌曲放在数组里,通过数组来获取SDK中的音乐文件,如果数组元素没有大于数组的长度,则可以实现next功能,然后数组元素不断增加,直到数组的元素等于数组的长度,则输出“这是最后一首歌”;在进行上一首的原理也一样,先进行停止,再进行重置,然后初始化,最后start就可以实现上一首和下一首的播放。

 

下方的还没有实现对应的功能,作业中也没有这部分要求,我想在假期把这部分功能完全实现。

 音乐列表的实现:

1.先在activity_main.xml中定义ListView组建

2.新建一个List.xml

3.获取和实现

重点代码:

首先要对ListView设置监听,利用适配器ArrayAdapter来进行设定

 

ArrayAdapter<String> arrayAdapter=null;
        arrayAdapter=new ArrayAdapter<String>(MainActivity.this,R.layout.list,musicName);
       final ListView list=(ListView)findViewById(R.id.list1);
        list.setAdapter(arrayAdapter);
       list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
               currIndex=pos;
             String result=parent.getItemAtPosition(pos).toString();
              Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();
               player.reset();
               initMediaPlayer();
               player.start();

            }
      });

 

  利用Toast.makeText来获取点击了哪首歌

 

 然后将位置赋值给数组的元素,再重置、初始化、播放,这样就可以点击列表实现音乐的播放

点击下方的音乐列表,也可以实现音乐的播放。

代码链接:
https://git.coding.net/mxl123_mxl/music_mxl.git

APK下载:

https://coding.net/u/mxl123_mxl/p/music_mxl/git/blob/master/app-debug.apk
因为没有导入音乐,所以下载到手机后无法实现音乐的播放等操作。
我一共放了7首歌曲。

视频链接:
http://v.youku.com/v_show/id_XMzk5NzY5ODY3Ng==.html?tpa=dW5pb25faWQ9MTAzMjUyXzEwMDAwMV8wMV8wMQ
因为我的电脑不支持自带的模拟器,我所使用的模拟器是第三方的模拟器,屏幕有点大,录屏时有水印,不过基本的功能没有受影响。
posted @ 2018-12-10 20:11  奔跑的蜗牛mxl  阅读(388)  评论(0编辑  收藏  举报