• Android第三次作业


    制作音乐播放器

    实现的功能:

    歌曲的播放、暂停、停止、上一首、下一首、歌单列表的显示(获取本地歌曲)。

    成品图:

    功能代码实现:

    实现歌曲的播放、暂停、停止、上一首、下一首:

     public void onClick(View v) {//按钮功能实现
            switch (v.getId()){
                case R.id.pre:
                    changeMusic(--current);//切哥
                    break;
                case R.id.play:
                    if (mediaPlayer==null){//如果没有歌在播放
                        changeMusic(0);//切歌到第一首
                    }else {//如果有歌在播放
                        if (!mediaPlayer.isPlaying())//如果歌曲恰好没有正在播放
                        {
                            mediaPlayer.start();//继续播放
                        } else {//如果歌曲恰好正在播放
                            Toast.makeText(MainActivity.this, "已经在播放", Toast.LENGTH_SHORT).show();//弹出提示信息
                        }
                    }
                    break;
                case R.id.next:
                    changeMusic(++current);//切歌
                    break;
                case R.id.pause:
                    if(mediaPlayer.isPlaying()){//如果歌曲恰好正在播放
                        mediaPlayer.pause();//暂停播放
                    }
                    break;
                case R.id.stop:
                    if(mediaPlayer.isPlaying()){//如果歌曲恰好正在播放
                        mediaPlayer.reset();//重置歌曲
                        try{
                            mediaPlayer.setDataSource(list.get(0).path);//获取第一首歌的资源
                            mediaPlayer.prepare();//准备播放
                        }catch(IOException e){
                            e.printStackTrace();
                        }
                    }
                    break;
            }
        }
    

      歌单列表的实现(涉及两个文件):

    //在MainActivity.java文件中
     private void init(){//初始化
            listview=(ListView)findViewById(R.id.listview);//为listview添加监听
            list=new ArrayList<>();//建立存放歌曲的list列表
            Cursor a=c.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.AudioColumns.IS_MUSIC);//获取本地音乐资源
            if(a!=null){
                while(a.moveToNext()){//读取音乐资源
                    SongInfomation x=new SongInfomation();//建立空音乐信息类的对象,方便对歌曲信息读取
                    x.song = a.getString(a.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));//获取歌曲
                    x.singer = a.getString(a.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));//获取歌手名
                    x.path = a.getString(a.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));//获取路径
                    x.size = a.getLong(a.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));//获取大小
                    x.duration=a.getInt(a.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));//获取持续
                    if(x.size>1000*800){
                        if(x.song.contains("-")){//如果歌名中包含字符‘-’
                            String[] s=x.song.split("-");//按‘-’进行分割
                            x.song=s[1];//将后半部分作为歌名存储
                            x.singer=s[0];//将前半部分作为歌手名存储
                        }
                        list.add(x);//将已经存储信息的歌曲信息对象放入列表
                    }
                }
                a.close();
            }
    
    //在Adapter1.java文件中
    public View getView(final int i, View view, ViewGroup viewGroup) {
            Display dis = null;
            if (view == null) {
                dis = new Display();
                view = View.inflate(context, R.layout.song, null);//找到展示歌曲信息的布局文件,也就是我的项目中的“menu.xml”文件
                dis.song = (TextView) view.findViewById(R.id.song);//监听、绑定歌单,将信息放到Display的对象中
                dis.singer = (TextView) view.findViewById(R.id.singer);
                dis.duration = (TextView) view.findViewById(R.id.duration);
                dis.position = (TextView) view.findViewById(R.id.postion);
                view.setTag(dis);//给view添加信息
            } else {
                dis = (Display) view.getTag();//可以通过getTag方法提取出我用setTag添加的信息,然后返回给Display的对象
            }
            dis.song.setText(list.get(i).song.toString());//将Display对象的一些需要的属性展示在界面或者传给需要的变量
            dis.singer.setText(list.get(i).singer.toString());
            int duration=list.get(i).duration;
            dis.position.setText(i+1+"");//歌曲序列数的实现
            return view;
        }
    

      

    代码地址(内含APK):https://git.coding.net/mmxf/android3.2.0.git

  • 相关阅读:
    力扣学习计划图床01
    一篇文章带你初步了解C++重载机制
    解决Github Gist无法访问问题
    VScode解决文件乱码问题,调整文件编码
    六、angular 生成二维码
    五、angularjs在进入界面前加载数据
    四、angularjs 如何在页面没有登录的情况下阻止用户通过更改url进入页面--$stateChangeStart
    三、angularjs上传图片
    二、单页应用如何调用微信接口和手机端的一些方法?
    二、Flex 布局教程:实例篇
  • 原文地址:https://www.cnblogs.com/mmxf/p/10101068.html
Copyright © 2020-2023  润新知