Mini播放器_设计二
来源:互联网 发布:好看的鲨鱼电影知乎 编辑:程序博客网 时间:2024/06/06 00:27
工具类
获取List数据,同时实现对象排列,这里有个问题在获取list数据的时候进行排序,发现反应速度很慢,效率太低,再想想应该怎么优化,一大波代码来袭
public List<MusicInfo> getMp3List(Context context) {musicInfos = new ArrayList<MusicInfo>();ContentResolver resolver = context.getContentResolver();if (resolver == null) {return null;}Cursor cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,MediaStore.Audio.Media.DEFAULT_SORT_ORDER);if (cursor != null) {if (cursor.moveToFirst()) {do {musicInfo = new MusicInfo();int id = cursor.getInt(cursor.getColumnIndexOrThrow(BaseColumns._ID));String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaColumns.TITLE));String album = cursor.getString(cursor.getColumnIndexOrThrow(AudioColumns.ALBUM));String singer = cursor.getString(cursor.getColumnIndexOrThrow(AudioColumns.ARTIST));if ("δ֪������".equals(singer)) {singer = "δ֪������";}String url = cursor.getString(cursor.getColumnIndexOrThrow(MediaColumns.DATA));int time = cursor.getInt(cursor.getColumnIndexOrThrow(AudioColumns.DURATION));long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaColumns.SIZE));long albumId = cursor.getInt(cursor.getColumnIndex(AudioColumns.ALBUM_ID));int isMusic = cursor.getInt(cursor.getColumnIndex(AudioColumns.IS_MUSIC));if (isMusic != 0) {musicInfo.setId(id);musicInfo.setTitle(title);musicInfo.setAlbum(album);musicInfo.setSinger(singer);musicInfo.setTime(time);musicInfo.setSize(size);musicInfo.setUrl(url);musicInfo.setAlbumId(albumId);musicInfos.add(musicInfo);}} while (cursor.moveToNext());}}PinyinComparator comp=new PinyinComparator();Collections.sort(musicInfos, comp);return musicInfos;}
package com.eton.util;import java.util.Comparator;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;import com.eton.music.MusicInfo;public class PinyinComparator implements Comparator {/** * 比较两个字符串 */@Overridepublic int compare(Object o1, Object o2) {MusicInfo info1 = (MusicInfo) o1;MusicInfo info2 = (MusicInfo) o2;String str1 = getPingYin(info1.getTitle());String str2 = getPingYin(info2.getTitle());int flag = str1.compareTo(str2);return flag;}/** * 将字符串中的中文转化为拼音,其他字符不变 * * @param inputString * @return */public String getPingYin(String inputString) {HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();format.setCaseType(HanyuPinyinCaseType.LOWERCASE);format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);format.setVCharType(HanyuPinyinVCharType.WITH_V);char[] input = inputString.trim().toCharArray();// 把字符串转化成字符数组String output = "";try {for (int i = 0; i < input.length; i++) {// \\u4E00是unicode编码,判断是不是中文if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {// 将汉语拼音的全拼存到temp数组String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);// 取拼音的第一个读音output += temp[0];}// 大写字母转化成小写字母else if (input[i] > 'A' && input[i] < 'Z') {output += java.lang.Character.toString(input[i]);output = output.toLowerCase();}output += java.lang.Character.toString(input[i]);}} catch (Exception e) {e.printStackTrace();}return output;}/** * 得到首字母 * * @param str * @return */public static String getHeadChar(String str) {String convert = "";char word = str.charAt(0);String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);if (pinyinArray != null) {convert += pinyinArray[0].charAt(0);} else {convert += word;}return convert.toUpperCase();} /** * 得到中文首字母缩写 * * @param str * @return */ public static String getPinYinHeadChar(String str) { String convert = ""; for (int j = 0; j < str.length(); j++) { char word = str.charAt(j); String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); if (pinyinArray != null) { convert += pinyinArray[0].charAt(0); } else { convert += word; } } return convert.toUpperCase(); }}
0 0
- Mini播放器_设计二
- Mini音乐播放器_设计一
- Mini SQL 总体设计(二):Token分割
- Android 项目之--Mini音乐播放器
- Android Mini音乐播放器[简单版本]
- IMusicPlayer网络音乐播放器_协议分析(二)
- Mini音乐播放器【简单版】(附源码)
- Android 小项目之--Mini音乐播放器【简单版】
- Android 视频播放器 应用层设计 考虑事项 (二)
- 游戏开发视频教程_基于MFC设计的MINI快跑游戏
- Mini-SQL:概念设计
- Mini-SQL:架构设计
- android _音乐播放器
- 多媒体_音乐播放器
- 多媒体_视频播放器
- Android 小项目之--Mini音乐播放器【简单版】(附源码)
- Android 小项目之--Mini音乐播放器【简单版】(附源码)
- Android 小项目之--Mini音乐播放器【简单版】(附源码)
- HDU 1058 DP
- Apache设置多网站
- Delphi各版本号,条件编译有用
- wordpress 判断浏览终端是 pc 还是 mobile 模式 使用插件 Any Mobile Theme Switcher
- 上色后图片
- Mini播放器_设计二
- ORACLE 常用函数——聚合函数
- Codeforces Round #260 (Div. 2)-A,B,C
- POJ 3087 Shuffle'm Up (模拟)
- mac FastScripts
- Android深入探究笔记之二十 -- 广播接收者,BroadcastReceiver
- 我的保险生涯系列-1
- 黑马程序员-io流
- 旅游指南下龙湾在越南