package tv.danmaku.android; import java.lang.reflect.Field; import android.os.Build; import android.text.TextUtils; public class BuildHelper { public static int FROYO = 8; // June 2010: Android 2.2 public static int GINGERBREAD = 9; // November 2010: Android 2.3 public static int GINGERBREAD_MR1 = 10; // February 2011: Android 2.3.3. public static int HONEYCOMB = 11; // February 2011: Android 3.0. public static int HONEYCOMB_MR1 = 12; // May 2011: Android 3.1. public static int HONEYCOMB_MR2 = 13; // June 2011: Android 3.2. public static int ICE_CREAM_SANDWICH = 14; // October 2011: Android 4.0. public static int ICE_CREAM_SANDWICH_MR1 = 15; // Android 4.0.3. public static int JELLY_BEAN = 16; // Android 4.1. public static int ANDROID_UNKNOWN = 17; // Unknown public static final String ABI_ARMv7a = "armeabi-v7a"; public static final String ABI_ARM = "armeabi"; public static final String ABI_X86 = "x86"; public static final int getSDKVersion() { return Build.VERSION.SDK_INT; } public static final boolean isApi9_GingerBread() { int sdk = getSDKVersion(); return sdk >= FROYO && sdk <= GINGERBREAD_MR1; } public static final boolean isApi9_GingerBreadOrLater() { int sdk = getSDKVersion(); return sdk >= FROYO; } public static final boolean isApi11_HoneyComb() { int sdk = getSDKVersion(); return sdk >= HONEYCOMB && sdk <= HONEYCOMB_MR2; } public static final boolean isApi11_HoneyCombOrLater() { return getSDKVersion() >= HONEYCOMB; } public static final boolean isApi14_IceCreamSandwich() { int sdk = getSDKVersion(); return sdk == ICE_CREAM_SANDWICH && sdk <= ICE_CREAM_SANDWICH_MR1; } public static final boolean isApi14_IceCreamSandwichOrLater() { return getSDKVersion() >= ICE_CREAM_SANDWICH; } public static final boolean isApi16_JellyBean() { int sdk = getSDKVersion(); return sdk == JELLY_BEAN; } public static final boolean isApi16_JellyBeanOrLater() { return getSDKVersion() >= JELLY_BEAN; } public static final boolean isApi17_UnknownOrLater() { return getSDKVersion() >= ANDROID_UNKNOWN; } public static boolean supportARMv7a() { return supportABI(ABI_ARMv7a); } public static boolean supportX86() { return supportABI(ABI_X86); } public static boolean supportARM() { return supportABI(ABI_ARM); } public static boolean supportABI(String requestAbi) { String abi = get_CPU_ABI(); if (!TextUtils.isEmpty(abi) && abi.equalsIgnoreCase(requestAbi)) return true; String abi2 = get_CPU_ABI2(); if (!TextUtils.isEmpty(abi2) && abi.equalsIgnoreCase(requestAbi)) return true; return false; } public static final String getParsedCpuAbiInfo() { StringBuilder cpuAbiInfo = new StringBuilder(); String cpuAbi = BuildHelper.get_CPU_ABI(); if (!TextUtils.isEmpty(cpuAbi)) { cpuAbiInfo.append("CPU ABI : "); cpuAbiInfo.append(cpuAbi); cpuAbiInfo.append("\n"); } String cpuAbi2 = BuildHelper.get_CPU_ABI2(); if (!TextUtils.isEmpty(cpuAbi)) { cpuAbiInfo.append("CPU ABI2 : "); cpuAbiInfo.append(cpuAbi2); cpuAbiInfo.append("\n"); } return cpuAbiInfo.toString(); } public static final String get_CPU_ABI() { return Build.CPU_ABI; } public static final String get_CPU_ABI2() { try { Field field = Build.class.getDeclaredField("CPU_ABI2"); if (field == null) return null; Object fieldValue = field.get(null); if (field == null || !(fieldValue instanceof String)) { return null; } return (String) fieldValue; } catch (Exception e) { } return null; } }