内容解析者_本地获取音乐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
- 内容解析者_本地获取音乐2
- 内容提供者_本地获取音乐文件
- 内容提供者从本地数据库获取音乐数据
- 获取本地音乐
- IOS获取本地音乐
- ios 获取本地音乐
- 获取本地音乐图片
- iOS获取本地音乐播放
- android_内容提供者和内容解析者_简单入门
- ios获取本地音乐库音乐很详细
- android获取本地音乐的专辑图片
- 获取ios本地乐库音乐MPMediaPickerController
- Android 获取本地音乐URI总结
- Android仿虾米音乐播放器之本地音乐获取
- 内容解析者获取手机通讯录信息
- 本地程序获取网页内容
- robotium获取本地文档内容
- ActionScript获取本地TEXT内容
- UVA136解题报告
- 等价类测试方法简单小结
- 【信息安全资质】发证机关和相关单位
- Java 并发编程知识点(二)
- iptables中的dport与sport简析
- 内容解析者_本地获取音乐2
- jQuery mobile
- 服务的基本用法-3
- poj 2346 递推 由n个可重复数字的和为某一数字的种类
- Linux编程基础之进程间通信之一:无名管道
- C#委托的应用
- 待搞清楚知识点
- 项目要点
- 2017-05-11 DBA日记,导致log file sync单次等待超500ms又一可能