/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.Environment; import android.preference.PreferenceManager; import android.util.Log; import com.galaxy.meetup.client.android.R; /** * * @author sihai * */ public class RingtoneUtils { private static String getHangoutRingtoneFileName(Context context) { return (new StringBuilder()).append(context.getResources().getResourceEntryName(R.raw.hangout_ringtone)).append(".ogg").toString(); } private static String getHangoutRingtonePath(Context context) { return (new StringBuilder()).append(Environment.getExternalStorageDirectory().toString()).append(File.separator).append(context.getString(R.string.hangout_ringtone_directory)).toString(); } public static void registerHangoutRingtoneIfNecessary(Context context) { Cursor cursor = null; boolean flag; File file = new File(getHangoutRingtonePath(context), getHangoutRingtoneFileName(context)); if(!file.exists()) { flag = true; } else { Uri uri = android.provider.MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath()); cursor = context.getContentResolver().query(uri, new String[] { "_data" }, (new StringBuilder("_data=\"")).append(file.getAbsolutePath()).append("\"").toString(), null, null); if(cursor == null || cursor.getCount() == 0) flag = true; else flag = false; } while(flag) { String s = getHangoutRingtonePath(context); String s1 = getHangoutRingtoneFileName(context); String s2 = context.getString(R.string.hangout_ringtone_name); File file1 = new File(s); file1.mkdirs(); if(!file1.exists()) { if(EsLog.isLoggable("RingtoneUtils", 6)) Log.e("RingtoneUtils", String.format("Could not create the directory %s", new Object[] { s })); break; } try { InputStream inputstream = context.getResources().openRawResource(R.raw.hangout_ringtone); File file2; try { byte abyte0[] = new byte[inputstream.available()]; inputstream.read(abyte0); inputstream.close(); FileOutputStream fileoutputstream = new FileOutputStream((new StringBuilder()).append(s).append(File.separator).append(s1).toString()); fileoutputstream.write(abyte0); fileoutputstream.close(); } catch(IOException ioexception) { if(EsLog.isLoggable("RingtoneUtils", 6)) Log.e("RingtoneUtils", "Could not create a file for the Hangout ringtone", ioexception); break; } file2 = new File(s, s1); if(!file2.exists()) { if(EsLog.isLoggable("RingtoneUtils", 6)) Log.e("RingtoneUtils", String.format("Could not create the file %s/%s for the Hangout ringtone", new Object[] { s, s1 })); } else { ContentValues contentvalues = new ContentValues(); contentvalues.put("_data", file2.getAbsolutePath()); contentvalues.put("title", s2); contentvalues.put("mime_type", "audio/ogg"); contentvalues.put("_size", Long.valueOf(file2.length())); contentvalues.put("artist", Integer.valueOf(R.string.app_name)); contentvalues.put("is_ringtone", Boolean.valueOf(true)); contentvalues.put("is_notification", Boolean.valueOf(true)); contentvalues.put("is_alarm", Boolean.valueOf(true)); contentvalues.put("is_music", Boolean.valueOf(false)); Uri uri1 = android.provider.MediaStore.Audio.Media.getContentUriForPath(file2.getAbsolutePath()); ContentResolver contentresolver = context.getContentResolver(); contentresolver.delete(uri1, (new StringBuilder("_data=\"")).append(file2.getAbsolutePath()).append("\"").toString(), null); contentresolver.delete(uri1, (new StringBuilder("title=\"")).append(s2).append("\"").toString(), null); Uri uri2 = contentresolver.insert(uri1, contentvalues); String s3 = context.getString(R.string.hangout_ringtone_setting_key); android.content.SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit(); editor.putString(s3, uri2.toString()); editor.commit(); } break; } // Misplaced declaration of an exception variable catch(Throwable throwable) { Log.e("RingtoneUtils", "Could not register the Hangout ringtone", throwable); break; } } return; } }