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

来源:互联网 发布:视频图像拼接软件 编辑:程序博客网 时间:2024/05/23 01:59

实现方法:

一、利用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 0