ApiHelper.java revision 9341cc2b9e2939e9915ff62fa9b11e56951947d1
19199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin/* 29199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin * Copyright (C) 2012 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 179199c4d69ebc9b9589271d1e62ba80138b1db700Owen Linpackage com.android.gallery3d.common; 189199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin 1976bfd87c90c98a46c06ea67dd895fc8f016f7267Owen Linimport android.os.Build; 200c4c03a9fa2486d8021ad8f36067aa985aa2c85dOwen Linimport android.provider.MediaStore.MediaColumns; 219199c4d69ebc9b9589271d1e62ba80138b1db700Owen Linimport android.view.View; 229199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin 239199c4d69ebc9b9589271d1e62ba80138b1db700Owen Linpublic class ApiHelper { 24987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin public static interface VERSION_CODES { 25987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin // These value are copied from Build.VERSION_CODES 26987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin public static final int GINGERBREAD_MR1 = 10; 27987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin public static final int HONEYCOMB = 11; 28987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin public static final int HONEYCOMB_MR1 = 12; 29987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin public static final int HONEYCOMB_MR2 = 13; 30987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin public static final int ICE_CREAM_SANDWICH = 14; 31987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin public static final int ICE_CREAM_SANDWICH_MR1 = 15; 32987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin public static final int JELLY_BEAN = 16; 33987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin } 349199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin 359199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin public static final boolean HAS_VIEW_SYSTEM_UI_FLAG_LAYOUT_STABLE = 369199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin hasField(View.class, "SYSTEM_UI_FLAG_LAYOUT_STABLE"); 379199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin 389199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin public static final boolean HAS_VIEW_SYSTEM_UI_FLAG_HIDE_NAVIGATION = 399199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin hasField(View.class, "SYSTEM_UI_FLAG_HIDE_NAVIGATION"); 409199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin 410c4c03a9fa2486d8021ad8f36067aa985aa2c85dOwen Lin public static final boolean HAS_MEDIA_COLUMNS_WIDTH_AND_HEIGHT = 420c4c03a9fa2486d8021ad8f36067aa985aa2c85dOwen Lin hasField(MediaColumns.class, "WIDTH"); 430c4c03a9fa2486d8021ad8f36067aa985aa2c85dOwen Lin 4476bfd87c90c98a46c06ea67dd895fc8f016f7267Owen Lin public static final boolean HAS_REUSING_BITMAP_IN_BITMAP_REGION_DECODER = 45987f5330637bb0f812845c6a4ab941d416f9b7bdOwen Lin Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN; 4676bfd87c90c98a46c06ea67dd895fc8f016f7267Owen Lin 475b981d12a290b7bd10d8439ff3a5a9533069b26eOwen Lin public static final boolean HAS_REUSING_BITMAP_IN_BITMAP_FACTORY = 485b981d12a290b7bd10d8439ff3a5a9533069b26eOwen Lin Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; 495b981d12a290b7bd10d8439ff3a5a9533069b26eOwen Lin 507c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang public static final boolean HAS_SET_BEAM_PUSH_URIS = 517c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN; 527c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang 537c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang public static final boolean HAS_SET_DEFALT_BUFFER_SIZE = hasMethod( 547c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang "android.graphics.SurfaceTexture", "setDefaultBufferSize", 557c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang int.class, int.class); 567c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang 57a207d3326346d6da7b713d2be097a42a0401f354Chih-Chung Chang public static final boolean HAS_MTP = 58a207d3326346d6da7b713d2be097a42a0401f354Chih-Chung Chang Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1; 59a207d3326346d6da7b713d2be097a42a0401f354Chih-Chung Chang 609341cc2b9e2939e9915ff62fa9b11e56951947d1Chih-Chung Chang public static final boolean HAS_AUTO_FOCUS_MOVE_CALLBACK = 619341cc2b9e2939e9915ff62fa9b11e56951947d1Chih-Chung Chang Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN; 629341cc2b9e2939e9915ff62fa9b11e56951947d1Chih-Chung Chang 639199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin private static boolean hasField(Class<?> klass, String fieldName) { 649199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin try { 659199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin klass.getDeclaredField(fieldName); 669199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin return true; 679199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin } catch (NoSuchFieldException e) { 689199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin return false; 699199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin } 709199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin } 717c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang 727c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang private static boolean hasMethod(String className, String methodName, 737c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang Class<?>... parameterTypes) { 747c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang try { 757c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang Class klass = Class.forName(className); 767c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang klass.getDeclaredMethod(methodName, parameterTypes); 777c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang return true; 787c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang } catch (Throwable th) { 797c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang return false; 807c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang } 817c3c93892c21a836ec816d18cb3133bca9ce4275Chih-Chung Chang } 829199c4d69ebc9b9589271d1e62ba80138b1db700Owen Lin} 83