博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android: ApiHelper
阅读量:4052 次
发布时间:2019-05-25

本文共 7121 字,大约阅读时间需要 23 分钟。

/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */import android.app.admin.DevicePolicyManager;import android.content.ComponentName;import android.hardware.Camera;import android.os.Build;import android.provider.MediaStore.MediaColumns;import android.view.View;import java.lang.reflect.Field;public class ApiHelper {	public static interface VERSION_CODES {		// These value are copied from Build.VERSION_CODES		public static final int GINGERBREAD_MR1 = 10;		public static final int HONEYCOMB = 11;		public static final int HONEYCOMB_MR1 = 12;		public static final int HONEYCOMB_MR2 = 13;		public static final int ICE_CREAM_SANDWICH = 14;		public static final int ICE_CREAM_SANDWICH_MR1 = 15;		public static final int JELLY_BEAN = 16;		public static final int JELLY_BEAN_MR1 = 17;	}	public static final boolean USE_888_PIXEL_FORMAT = Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;	public static final boolean ENABLE_PHOTO_EDITOR = Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH;	public static final boolean HAS_VIEW_SYSTEM_UI_FLAG_LAYOUT_STABLE = hasField(			View.class, "SYSTEM_UI_FLAG_LAYOUT_STABLE");	public static final boolean HAS_VIEW_SYSTEM_UI_FLAG_HIDE_NAVIGATION = hasField(			View.class, "SYSTEM_UI_FLAG_HIDE_NAVIGATION");	public static final boolean HAS_MEDIA_COLUMNS_WIDTH_AND_HEIGHT = hasField(			MediaColumns.class, "WIDTH");	public static final boolean HAS_REUSING_BITMAP_IN_BITMAP_REGION_DECODER = Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;	public static final boolean HAS_REUSING_BITMAP_IN_BITMAP_FACTORY = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;	public static final boolean HAS_SET_BEAM_PUSH_URIS = Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;	public static final boolean HAS_SET_DEFALT_BUFFER_SIZE = hasMethod(			"android.graphics.SurfaceTexture", "setDefaultBufferSize",			int.class, int.class);	public static final boolean HAS_RELEASE_SURFACE_TEXTURE = hasMethod(			"android.graphics.SurfaceTexture", "release");	public static final boolean HAS_SURFACE_TEXTURE = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;	public static final boolean HAS_MTP = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1;	public static final boolean HAS_AUTO_FOCUS_MOVE_CALLBACK = Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN;	public static final boolean HAS_REMOTE_VIEWS_SERVICE = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;	public static final boolean HAS_INTENT_EXTRA_LOCAL_ONLY = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB;	public static final boolean HAS_SET_SYSTEM_UI_VISIBILITY = hasMethod(			View.class, "setSystemUiVisibility", int.class);	public static final boolean HAS_FACE_DETECTION;	static {		boolean hasFaceDetection = false;		try {			Class
listenerClass = Class .forName("android.hardware.Camera$FaceDetectionListener"); hasFaceDetection = hasMethod(Camera.class, "setFaceDetectionListener", listenerClass) && hasMethod(Camera.class, "startFaceDetection") && hasMethod(Camera.class, "stopFaceDetection") && hasMethod(Camera.Parameters.class, "getMaxNumDetectedFaces"); } catch (Throwable t) { } HAS_FACE_DETECTION = hasFaceDetection; } public static final boolean HAS_GET_CAMERA_DISABLED = hasMethod( DevicePolicyManager.class, "getCameraDisabled", ComponentName.class); public static final boolean HAS_MEDIA_ACTION_SOUND = Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN; public static final boolean HAS_OLD_PANORAMA = Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH; public static final boolean HAS_TIME_LAPSE_RECORDING = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; public static final boolean HAS_ZOOM_WHEN_RECORDING = Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH; public static final boolean HAS_CAMERA_FOCUS_AREA = Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH; public static final boolean HAS_CAMERA_METERING_AREA = Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH; public static final boolean HAS_FINE_RESOLUTION_QUALITY_LEVELS = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; public static final boolean HAS_MOTION_EVENT_TRANSFORM = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; public static final boolean HAS_EFFECTS_RECORDING = false; // "Background" filter does not have "context" input port in jelly bean. public static final boolean HAS_EFFECTS_RECORDING_CONTEXT_INPUT = Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1; public static final boolean HAS_GET_SUPPORTED_VIDEO_SIZE = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; public static final boolean HAS_SET_ICON_ATTRIBUTE = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; public static final boolean HAS_MEDIA_PROVIDER_FILES_TABLE = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; public static final boolean HAS_SURFACE_TEXTURE_RECORDING = Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN; public static final boolean HAS_ACTION_BAR = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; // Ex: View.setTranslationX. public static final boolean HAS_VIEW_TRANSFORM_PROPERTIES = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; public static final boolean HAS_CAMERA_HDR = Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1; public static final boolean HAS_OPTIONS_IN_MUTABLE = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB; public static final boolean CAN_START_PREVIEW_IN_JPEG_CALLBACK = Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH; public static final boolean HAS_VIEW_PROPERTY_ANIMATOR = Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1; public static final boolean HAS_POST_ON_ANIMATION = Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN; public static int getIntFieldIfExists(Class
klass, String fieldName, Class
obj, int defaultVal) { try { Field f = klass.getDeclaredField(fieldName); return f.getInt(obj); } catch (Exception e) { return defaultVal; } } private static boolean hasField(Class
klass, String fieldName) { try { klass.getDeclaredField(fieldName); return true; } catch (NoSuchFieldException e) { return false; } } private static boolean hasMethod(String className, String methodName, Class
... parameterTypes) { try { Class
klass = Class.forName(className); klass.getDeclaredMethod(methodName, parameterTypes); return true; } catch (Throwable th) { return false; } } private static boolean hasMethod(Class
klass, String methodName, Class
... paramTypes) { try { klass.getDeclaredMethod(methodName, paramTypes); return true; } catch (NoSuchMethodException e) { return false; } }}

转载地址:http://nyici.baihongyu.com/

你可能感兴趣的文章
佛教三宝-三皈依
查看>>
杂阿含经喻世间有四等马
查看>>
考研前夜涂笔
查看>>
英语复试自我介绍
查看>>
什么是熵?
查看>>
拼凑、摘抄-评李代平的软件工程第二版
查看>>
误传了数千年的几个名句
查看>>
韩复榘经典语录
查看>>
厅、部、局、司区分大小
查看>>
VS2005中使用C#编写MDI窗口根据子窗口个数控制菜单项的enabled属性
查看>>
北川邓家“刘汉小学”无一死亡奇迹背后的真相
查看>>
救灾,从来没有胜利
查看>>
.net 2.0中ConfigurationManager替代了原来的ConfigurationSettings
查看>>
Asp.net 2.0中使用Datawindow.net2.0
查看>>
常用命名法:骆驼命名法,匈牙利命名法和帕斯卡命名法
查看>>
Server.MapPath方法测试结果
查看>>
Asp.net 默认配置下,Session莫名丢失的原因及解决办法
查看>>
Datawindow.net中如何使用Calendar控件
查看>>
如何在Datawindow.net中实现让当前行选中,并且当前行以其他颜色显示
查看>>
Datawindow.net如何使用导航栏
查看>>