package com.cinla.ringtone;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import javax.net.ssl.HttpsURLConnection;
import com.adwhirl.AdWhirlLayout;
import com.latest.ringtone.R;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class Utils {
private static final String TAG = "New Ringtone Client";
private static final boolean DEBUG = false;
public static void D(String msg) {
if (DEBUG) {
Log.d(TAG, msg);
}
}
public static boolean isEclairOrLater() {
return Build.VERSION.SDK.compareTo("5") >=0;
}
public static boolean isCupcakeOrBefore() {
return Build.VERSION.SDK.compareTo("3") <=0;
}
public static Uri saveToMediaLib(String title, String outPath, long length, String artist, ContentResolver cr) {
String mimeType = "audio/mpeg";
ContentValues values = new ContentValues();
// // // Log.e("save", " title " + title + " out " + outPath +
// " artist " + artist);
values.put(MediaStore.MediaColumns.DATA, outPath);
values.put(MediaStore.MediaColumns.TITLE, title);
values.put(MediaStore.MediaColumns.SIZE, length);
values.put(MediaStore.MediaColumns.MIME_TYPE, mimeType);
values.put(MediaStore.Audio.Media.ARTIST, artist);
values.put(MediaStore.Audio.Media.COMPOSER, Constant.sAppName);
// values.put(MediaStore.Audio.Media.DURATION, duration);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, true);
// Insert it into the database
Uri uri = MediaStore.Audio.Media.getContentUriForPath(outPath);
try {
final Uri newUri = cr.insert(uri, values);
// // // Log.e("save", " ok ");
// TODO: do we need this?
// setResult(RESULT_OK, new Intent().setData(newUri));
return newUri;
} catch (Exception e) {
}
return null;
}
public static String encodeUrlTail(String url) {
String fileName = url.substring(url.lastIndexOf('/')+1);
url = url.substring(0, url.lastIndexOf('/')+1);
fileName = URLEncoder.encode(fileName);
return url+fileName;
}
public static boolean writeToDisk(MusicInfo musicInfo) {
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new FileOutputStream(musicInfo.getObjFilePath()));
oos.writeObject(musicInfo);
oos.flush();
oos.close();
} catch (Exception e) {
Utils.D("Write obj to file failed. "+e.getMessage());
return false;
}
return true;
}
public static MusicInfo readMusicInfoFromFile(String path) {
ObjectInputStream ois = null;
MusicInfo musicInfo = null;
try {
ois = new ObjectInputStream(new FileInputStream(path));
musicInfo = (MusicInfo)ois.readObject();
ois.close();
return musicInfo;
} catch (Exception e) {
Utils.D("Read obj from file failed.");
return null;
}
}
public static String musicPathToObjPath(String musicPath) {
String objFilePath = null;
try {
String fileName = musicPath.substring(musicPath.lastIndexOf('/')+1, musicPath.lastIndexOf('.'));
objFilePath = Constant.sObjDir+fileName;
} catch (Exception e) {
return null;
}
return objFilePath;
}
public static boolean rateSong(String uuid, float rateValue) {
String urlString = Constant.BASE_URL+Constant.RATE_URL+"?uuid="+uuid+"&rate="+rateValue;
URL url = null;
HttpURLConnection conn = null;
try {
url = new URL(urlString);
conn = (HttpURLConnection) url.openConnection();
conn.connect();
} catch (Exception e) {
Utils.D("rate failed.");
return false;
}
return true;
}
public static void showFormattedImageToast(Context context, int id, Drawable drawable, Object... args) {
final View view = LayoutInflater.from(context).inflate(R.layout.book_notification, null);
((TextView) view.findViewById(R.id.message)).setText(
String.format(context.getText(id).toString(), args));
((ImageView) view.findViewById(R.id.image)).setImageDrawable(drawable);
Toast toast = new Toast(context);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(view);
toast.show();
}
private static final boolean blackscreen = isBlackScreen();
private static boolean isBlackScreen() {
// http://since2006.com/blog/google-io2010-android-devices/
return Build.VERSION.SDK.equalsIgnoreCase("3");
}
}