package com.tadpolemusic.media; import java.io.File; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import android.content.ContentValues; import android.content.Context; import android.media.RingtoneManager; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.provider.MediaStore; import android.widget.Toast; public class MusicData implements Parcelable { public final static String KEY_MUSIC_DATA = "MusicData"; private final static String KEY_MUSIC_NAME = "MusicName"; private final static String KEY_MUSIC_TIME = "MusicTime"; private final static String KEY_MUSIC_PATH = "MusicPath"; private final static String KEY_MUSIC_ARITST = "MusicAritst"; public String musicName; public int musicDuration; public String musicPath; public String musicAritst; public void setMyRingtone(final Context context) { new AsyncTask<String, String, String>() { @Override protected void onPostExecute(String result) { super.onPostExecute(result); Toast.makeText(context, "设置成功", Toast.LENGTH_LONG).show(); } @Override protected void onProgressUpdate(String... values) { super.onProgressUpdate(values); } @Override protected String doInBackground(String... params) { ContentValues values = new ContentValues(); values.put(MediaStore.MediaColumns.DATA, musicPath); values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); values.put(MediaStore.MediaColumns.DISPLAY_NAME, musicName); values.put(MediaStore.MediaColumns.TITLE, musicName); values.put(MediaStore.Audio.Media.IS_RINGTONE, true); values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false); values.put(MediaStore.Audio.Media.IS_ALARM, false); values.put(MediaStore.Audio.Media.IS_MUSIC, false); Uri uri = MediaStore.Audio.Media.getContentUriForPath(musicPath); Uri newUri = context.getContentResolver().insert(uri, values); RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri); return null; } }.execute(""); } public void deleteFromDB(Context context) { Uri uri = MediaStore.Audio.Media.getContentUriForPath(musicPath); context.getContentResolver().delete(uri, MediaStore.Audio.Media.DATA + " = ?", new String[] { musicPath }); } public void deleteFile() { File file = new File(musicPath); if (file.exists()) { file.delete(); } } public String getTimerText(int musicPos) { if (musicDuration == 0) { return "00:00/00:00"; } int curTime = musicPos / 1000; int totalTime = musicDuration / 1000; int curminute = curTime / 60; int cursecond = curTime % 60; int totalminute = totalTime / 60; int totalsecond = totalTime % 60; String curTimeString = String.format("%02d:%02d", curminute, cursecond); String totalTimeString = String.format("%02d:%02d", totalminute, totalsecond); curTimeString = curTimeString + "/" + totalTimeString; return curTimeString; } public String getProgressTimeText(int musicPos){ if (musicDuration == 0) { return "00:00/00:00"; } int curTime = musicPos / 1000; int curminute = curTime / 60; int cursecond = curTime % 60; String curTimeString = String.format("%02d:%02d", curminute, cursecond); return curTimeString; } public String getDurtaionText(){ if (musicDuration == 0) { return "00:00"; } int totalTime = musicDuration / 1000; int totalminute = totalTime / 60; int totalsecond = totalTime % 60; String totalTimeString = String.format("%02d:%02d", totalminute, totalsecond).intern(); return totalTimeString; } public int getProgress(int musicPos) { if (musicDuration == 0) { return 0; } return (100 * musicPos) / musicDuration; } public MusicData() { musicName = ""; musicDuration = 0; musicPath = ""; musicAritst = ""; } public String getFirstLetterInUpcase() { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.UPPERCASE); String str = PinyinHelper.toHanyuPinyinString(musicName, format, ""); if (str != null && str.length() > 0) { if (Character.isLetter(str.toCharArray()[0])) { return ((String) str.subSequence(0, 1)).toUpperCase(); } } return "?"; } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub Bundle mBundle = new Bundle(); mBundle.putString(KEY_MUSIC_NAME, musicName); mBundle.putInt(KEY_MUSIC_TIME, musicDuration); mBundle.putString(KEY_MUSIC_PATH, musicPath); mBundle.putString(KEY_MUSIC_ARITST, musicAritst); dest.writeBundle(mBundle); } public static final Parcelable.Creator<MusicData> CREATOR = new Parcelable.Creator<MusicData>() { @Override public MusicData createFromParcel(Parcel source) { // TODO Auto-generated method stub MusicData Data = new MusicData(); Bundle mBundle = new Bundle(); mBundle = source.readBundle(); Data.musicName = mBundle.getString(KEY_MUSIC_NAME); Data.musicDuration = mBundle.getInt(KEY_MUSIC_TIME); Data.musicPath = mBundle.getString(KEY_MUSIC_PATH); Data.musicAritst = mBundle.getString(KEY_MUSIC_ARITST); return Data; } @Override public MusicData[] newArray(int size) { // TODO Auto-generated method stub return new MusicData[size]; } }; }