//package org.mortbay.ijetty.util;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Build;
public final class AndroidInfo
{
private static final String EMULATOR_ID = "ffffffffffffffff";
public static CharSequence getApplicationLabel(Context context)
{
try
{
PackageManager pm = context.getPackageManager();
ApplicationInfo ai = pm.getApplicationInfo(context.getPackageName(),0);
return pm.getApplicationLabel(ai);
}
catch (NameNotFoundException e)
{
return "AnonDroid";
}
}
public static String getApplicationVersion(Context context)
{
try
{
PackageManager pm = context.getPackageManager();
return pm.getPackageInfo(context.getPackageName(),0).versionName;
}
catch (NameNotFoundException e)
{
return "";
}
}
public static boolean isOnEmulator(Context context)
{
if ("sdk".equals(Build.MODEL) && "sdk".equals(Build.PRODUCT))
{
return true;
}
return getUniqueDeviceID(context).equals(EMULATOR_ID);
}
public static String getDeviceModel()
{
StringBuilder ret = new StringBuilder();
if ("sdk".equals(Build.MODEL) && "sdk".equals(Build.PRODUCT))
{
return "SDK Emulator";
}
ret.append(Build.MODEL).append(" [");
ret.append(Build.MANUFACTURER).append(" ");
ret.append(Build.PRODUCT).append("]");
return ret.toString();
}
public static String getOSVersion()
{
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.CUR_DEVELOPMENT)
{
return "DEV";
}
return Build.VERSION.RELEASE;
}
public static String getUniqueDeviceID(Context context)
{
ContentResolver contentResolver = context.getContentResolver();
String id = android.provider.Settings.System.getString(contentResolver,android.provider.Settings.System.ANDROID_ID);
if (id == null)
{
id = EMULATOR_ID; // running on emulator.
}
return id;
}
/**
* Build an HTTP User-Agent suitable enough to identify this application + version + handset
*/
public static String getUserAgent(Context context)
{
StringBuilder ua = new StringBuilder();
ua.append(AndroidInfo.getApplicationLabel(context)).append("/");
ua.append(AndroidInfo.getApplicationVersion(context));
ua.append(" (Android ").append(AndroidInfo.getOSVersion());
ua.append("/").append(AndroidInfo.getDeviceModel()).append(")");
return ua.toString();
}
private AndroidInfo()
{
/* prevent instantiation */
}
}