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;}


comparetor 比较器


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
原创粉丝点击