blob: 305fb2cf3735db8b48e8c6aebbe65f0dbc430eae [file] [log] [blame]
Owen Lin9199c4d2012-06-20 16:54:24 +08001/*
2 * Copyright (C) 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.gallery3d.common;
18
Owen Linb4cadaf2012-07-04 15:48:59 +080019import android.app.Activity;
Owen Lin76bfd872012-06-27 19:01:21 +080020import android.os.Build;
Owen Lin0c4c03a2012-06-22 12:31:33 +080021import android.provider.MediaStore.MediaColumns;
Owen Lin9199c4d2012-06-20 16:54:24 +080022import android.view.View;
23
24public class ApiHelper {
Owen Lin987f5332012-06-28 11:10:02 +080025 public static interface VERSION_CODES {
26 // These value are copied from Build.VERSION_CODES
27 public static final int GINGERBREAD_MR1 = 10;
28 public static final int HONEYCOMB = 11;
29 public static final int HONEYCOMB_MR1 = 12;
30 public static final int HONEYCOMB_MR2 = 13;
31 public static final int ICE_CREAM_SANDWICH = 14;
32 public static final int ICE_CREAM_SANDWICH_MR1 = 15;
33 public static final int JELLY_BEAN = 16;
34 }
Owen Lin9199c4d2012-06-20 16:54:24 +080035
36 public static final boolean HAS_VIEW_SYSTEM_UI_FLAG_LAYOUT_STABLE =
37 hasField(View.class, "SYSTEM_UI_FLAG_LAYOUT_STABLE");
38
39 public static final boolean HAS_VIEW_SYSTEM_UI_FLAG_HIDE_NAVIGATION =
40 hasField(View.class, "SYSTEM_UI_FLAG_HIDE_NAVIGATION");
41
Owen Lin0c4c03a2012-06-22 12:31:33 +080042 public static final boolean HAS_MEDIA_COLUMNS_WIDTH_AND_HEIGHT =
43 hasField(MediaColumns.class, "WIDTH");
44
Owen Lin76bfd872012-06-27 19:01:21 +080045 public static final boolean HAS_REUSING_BITMAP_IN_BITMAP_REGION_DECODER =
Owen Lin987f5332012-06-28 11:10:02 +080046 Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;
Owen Lin76bfd872012-06-27 19:01:21 +080047
Owen Lin5b981d12012-06-28 17:12:20 +080048 public static final boolean HAS_REUSING_BITMAP_IN_BITMAP_FACTORY =
49 Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;
50
Chih-Chung Chang7c3c9382012-07-03 12:49:45 +080051 public static final boolean HAS_SET_BEAM_PUSH_URIS =
52 Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;
53
54 public static final boolean HAS_SET_DEFALT_BUFFER_SIZE = hasMethod(
55 "android.graphics.SurfaceTexture", "setDefaultBufferSize",
56 int.class, int.class);
57
Chih-Chung Changa207d332012-07-03 19:33:46 +080058 public static final boolean HAS_MTP =
59 Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1;
60
Chih-Chung Chang9341cc22012-07-04 16:54:02 +080061 public static final boolean HAS_AUTO_FOCUS_MOVE_CALLBACK =
62 Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;
63
Owen Linb4cadaf2012-07-04 15:48:59 +080064 public static final boolean HAS_ACTIVITY_INVALIDATE_OPTIONS_MENU =
65 hasMethod(Activity.class, "invalidateOptionsMenu");
66
Owen Lin9199c4d2012-06-20 16:54:24 +080067 private static boolean hasField(Class<?> klass, String fieldName) {
68 try {
69 klass.getDeclaredField(fieldName);
70 return true;
71 } catch (NoSuchFieldException e) {
72 return false;
73 }
74 }
Chih-Chung Chang7c3c9382012-07-03 12:49:45 +080075
76 private static boolean hasMethod(String className, String methodName,
77 Class<?>... parameterTypes) {
78 try {
Owen Linb4cadaf2012-07-04 15:48:59 +080079 Class<?> klass = Class.forName(className);
Chih-Chung Chang7c3c9382012-07-03 12:49:45 +080080 klass.getDeclaredMethod(methodName, parameterTypes);
81 return true;
82 } catch (Throwable th) {
83 return false;
84 }
85 }
Owen Linb4cadaf2012-07-04 15:48:59 +080086
87 private static boolean hasMethod(
88 Class<?> klass, String methodName, Class<?> ... paramTypes) {
89 try {
90 klass.getDeclaredMethod(methodName, paramTypes);
91 return true;
92 } catch (NoSuchMethodException e) {
93 return false;
94 }
95 }
Owen Lin9199c4d2012-06-20 16:54:24 +080096}