ApiHelper.java revision 040e3c053cc0d2097332de24cf5328a26a8e7332
19199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin/* 2b50b5cbfbc0a67db6fc43373363b10381c9c61a3Angus Kong * Copyright (C) 2013 The Android Open Source Project 39199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * 49199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 59199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * you may not use this file except in compliance with the License. 69199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * You may obtain a copy of the License at 79199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * 89199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 99199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * 109199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * Unless required by applicable law or agreed to in writing, software 119199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 129199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * See the License for the specific language governing permissions and 149199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * limitations under the License. 159199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin */ 169199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin 17b50b5cbfbc0a67db6fc43373363b10381c9c61a3Angus Kongpackage com.android.camera.util; 189199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin 1976bfd87c90c98a46c06ea67dd895fc8f016f7267Owen Linimport android.os.Build; 209199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin 21708bfce7f38274073611a32de69e16fe8bf292eaAngus Kongimport java.lang.reflect.Field; 22708bfce7f38274073611a32de69e16fe8bf292eaAngus Kong 239199c4d69ebc9b9589271d1e62ba80138b1db700Owen Linpublic class ApiHelper { 248f69397b9c6acf6da28244a8ccea596546f34f87Bobby Georgescu public static final boolean AT_LEAST_16 = Build.VERSION.SDK_INT >= 16; 25a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware 265df64b0a818d4f85cb14602db725f05b0055c1d9Mangesh Ghiware public static final boolean HAS_APP_GALLERY = 275df64b0a818d4f85cb14602db725f05b0055c1d9Mangesh Ghiware Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1; 28a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware 29a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware public static final boolean HAS_ANNOUNCE_FOR_ACCESSIBILITY = 30638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; 319341cc2b9e2939e9915ff62fa9b11e56951947d1Chih-Chung Chang public static final boolean HAS_AUTO_FOCUS_MOVE_CALLBACK = 32638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; 33708bfce7f38274073611a32de69e16fe8bf292eaAngus Kong public static final boolean HAS_MEDIA_ACTION_SOUND = 34638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; 35a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware public static final boolean HAS_MEDIA_COLUMNS_WIDTH_AND_HEIGHT = 36a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; 37a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware public static final boolean HAS_SET_BEAM_PUSH_URIS = 38a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; 39fbf6dbaf20e1508f19468c33021813d078afdb35Angus Kong public static final boolean HAS_SURFACE_TEXTURE_RECORDING = 40638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; 41040e3c053cc0d2097332de24cf5328a26a8e7332Doris Liu public static final boolean HAS_ROBOTO_MEDIUM_FONT = 4253b3ddbae16c5efbac842e158525720d0b9108cbDoris Liu Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN; 43a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware 449bf0fd606a624138b8c1123d168f06a24c4d20a3Sascha Haeberling public static final boolean HAS_CAMERA_HDR_PLUS = isKitKatOrHigher(); 45ea1d1d283f6e75f012fe091608cf0b588866a511Wu-cheng Li public static final boolean HAS_CAMERA_HDR = 46638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1; 47a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware public static final boolean HAS_DISPLAY_LISTENER = 48a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1; 496afdb1769adddaf94116a7d1cad82740a9455641Michael Kolb 50d1e0a6e78d686cdc259a2978e988cdd734ca6a2fMichael Kolb public static final boolean HAS_ORIENTATION_LOCK = 51638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2; 52a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware public static final boolean HAS_ROTATION_ANIMATION = 53a5682ab08e1d42fe272ec877929478b4adb769f5Mangesh Ghiware Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2; 54638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling 55638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling public static final boolean HAS_HIDEYBARS = isKitKatOrHigher(); 56f479c0db587cb21ea0699e2421f1d0d8e5ada289Doris Liu 5736d16bc95d7ed7d12fc8136ae68a9579b20cf5a1Wu-cheng Li public static int getIntFieldIfExists(Class<?> klass, String fieldName, 5836d16bc95d7ed7d12fc8136ae68a9579b20cf5a1Wu-cheng Li Class<?> obj, int defaultVal) { 5936d16bc95d7ed7d12fc8136ae68a9579b20cf5a1Wu-cheng Li try { 6036d16bc95d7ed7d12fc8136ae68a9579b20cf5a1Wu-cheng Li Field f = klass.getDeclaredField(fieldName); 6136d16bc95d7ed7d12fc8136ae68a9579b20cf5a1Wu-cheng Li return f.getInt(obj); 6236d16bc95d7ed7d12fc8136ae68a9579b20cf5a1Wu-cheng Li } catch (Exception e) { 6336d16bc95d7ed7d12fc8136ae68a9579b20cf5a1Wu-cheng Li return defaultVal; 6436d16bc95d7ed7d12fc8136ae68a9579b20cf5a1Wu-cheng Li } 6536d16bc95d7ed7d12fc8136ae68a9579b20cf5a1Wu-cheng Li } 6636d16bc95d7ed7d12fc8136ae68a9579b20cf5a1Wu-cheng Li 67638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling public static boolean isKitKatOrHigher() { 68638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling // TODO: Remove CODENAME check as soon as VERSION_CODES.KITKAT is final. 69638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT 70638e6f06c877d90b907f66ea9c22b3c6b73c7384Sascha Haeberling || "KeyLimePie".equals(Build.VERSION.CODENAME); 71b4cadafb8c454aff10b4096a801cc71f8519fe8aOwen Lin } 729199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin} 73