内容解析者_本地获取音乐2


实现方法:

一、利用contentresolver获取对象后通过。Qure方法获取cursor对象然后循环遍历从数据库筛选歌手姓名,并将歌手姓名单一的放在listview上显示。

二、过传参的方式将歌手姓名传递给显示歌曲的界面,该界面通过歌手姓名在数据库中找到指定歌手的歌曲。

具体实现代码如下:
(1)歌手类
public class SingerActivity extends Activity {
       ImageView mReturn;//返回键
        ListView mListView;//歌手列表


        ArrayList<Singer> singers;
        SingerAdapter singerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      initView();
        initSinger();

        singerAdapter = new SingerAdapter(singers,this);

        mListView.setAdapter(singerAdapter);
        /**
         * Item传参式点击事件
         */
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Intent intent =new Intent(SingerActivity.this,SongListActivity.class);
                //Toast.makeText(SingerActivity.this, singers.get(i).getName(), Toast.LENGTH_SHORT).show();
                intent.putExtra("name",singers.get(i).getName());
                startActivity(intent);
            }
        });
        /**
         * 返回点击事件
         */


    }

    /**
     * 注册组件
     */

    void initView(){
        setContentView(R.layout.activity_singer);
        mListView = (ListView) findViewById(R.id.lv_singers);
        mReturn = (ImageView) findViewById(R.id.iv_return);

    }
    void initSinger(){

        Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null);
            String otherName ="";
        singers =new ArrayList<>();
        if(cursor!=null){
            while(cursor.moveToNext()){
                String  songName =cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
               // String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
                if (!songName.equals(otherName)){
                    Singer singer1 = new Singer(R.mipmap.yangzongwei,songName);
                    singers.add(singer1);
                }
                otherName =songName;
            //    Toast.makeText(SingerActivity.this, songName, Toast.LENGTH_SHORT).show();
            }
        }






    }
    public void returnSinger(View v){
        Intent intent =new Intent(SingerActivity.this,MainActivity1.class);
        startActivity(intent);


    }

}


(二)。歌曲类

public class SongListActivity extends Activity {
    ArrayList<Song> mSongs;
    MySongAdapter mySongAdapter;
    ListView listView;
    ContentResolver contentResolver;
    ImageView mReturn;//返回歌手列表
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_song_list);
        listView = (ListView) findViewById(R.id.lv_song_item);
        contentResolver = getContentResolver();
        Intent intent= getIntent();
        String singerName = intent.getStringExtra("name");
        mSongs =new ArrayList<>();
      Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null);
        if(cursor!=null){
    while(cursor.moveToNext()){
        if(cursor.getString(cursor.getColumnIndex("artist")).equals(singerName)){
                String  songName =cursor.getString(cursor.getColumnIndex("title"));
                String albumb =cursor.getString(cursor.getColumnIndex("album"));
                long duration =Long.parseLong(cursor.getString(cursor.getColumnIndex("duration")));
                String minute =minute(duration);
                 long _size =Long.parseLong(cursor.getString(cursor.getColumnIndex("_size")));
                String size =formetFileSize(_size);
                Song song =new Song(songName,albumb,minute,size);
                mSongs.add(song);
         //   Log.d("歌曲","歌曲:"+songName+"专辑:"+albumb+"市场:"+minute+"大小:"+size);
        }
    }
            mySongAdapter =new MySongAdapter(mSongs,SongListActivity.this);
            listView.setAdapter(mySongAdapter);
        }
    }

    /**
     * 返回歌手列表方法
     */
    public void returnSinger(View v){
        Intent intent =new Intent(SongListActivity.this,SingerActivity.class);
        startActivity(intent);
    }




    /**
     * 将时长转化为字符串格式
     * @param time
     * @return
     */

    public String minute(long time){
        Date date = new Date(time);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String dateStr = sdf.format(date);
      String minute = dateStr.substring(dateStr.length()-4,dateStr.length());
       minute= minute.replace(":","分");
        minute =minute+"秒";
        return  minute;
    }

    /**
     * 将大小转为M格式
     * @param fileS
     * @return
     */
    public String formetFileSize(long fileS) {
        DecimalFormat df = new DecimalFormat("#.00");
        String fileSizeString = "";
        if (fileS < 1024) {
            fileSizeString = df.format((double) fileS) + "B";
        } else if (fileS < 1048576) {
            fileSizeString = df.format((double) fileS / 1024) + "K";
        } else if (fileS < 1073741824) {
            fileSizeString = df.format((double) fileS / 1048576) + "M";
        } else {
            fileSizeString = df.format((double) fileS / 1073741824) + "G";
        }
        return fileSizeString;
    }

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值