diff options
Diffstat (limited to 'src_wrapper/org/codeaurora/snapcam/wrapper/ExtendedFaceWrapper.java')
-rw-r--r-- | src_wrapper/org/codeaurora/snapcam/wrapper/ExtendedFaceWrapper.java | 233 |
1 files changed, 233 insertions, 0 deletions
diff --git a/src_wrapper/org/codeaurora/snapcam/wrapper/ExtendedFaceWrapper.java b/src_wrapper/org/codeaurora/snapcam/wrapper/ExtendedFaceWrapper.java new file mode 100644 index 000000000..3a6150558 --- /dev/null +++ b/src_wrapper/org/codeaurora/snapcam/wrapper/ExtendedFaceWrapper.java @@ -0,0 +1,233 @@ +/* + * Copyright (c) 2017, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.codeaurora.snapcam.wrapper; + +import java.lang.reflect.Method; + +import android.hardware.Camera.Face; +import android.os.Bundle; +import android.util.Log; + +public class ExtendedFaceWrapper extends Wrapper{ + private final static String CLASS_NAME = "org.codeaurora.camera.ExtendedFace"; + private static Class<?> mExtendFaceClass; + + public static boolean isExtendedFaceInstance(Object object) { + if ( mExtendFaceClass == null ){ + try { + mExtendFaceClass = Class.forName(CLASS_NAME); + }catch (Exception exception){ + exception.printStackTrace(); + return false; + } + } + return mExtendFaceClass.isInstance(object); + } + + private static Method method_getSmileDegree = null; + public static int getSmileDegree(Face face) { + int degree = 0; + try { + if (method_getSmileDegree == null) { + method_getSmileDegree = getMethod("getSmileDegree"); + } + degree = (int) method_getSmileDegree.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return degree; + } + + private static Method method_getSmileScore = null; + public static int getSmileScore(Face face) { + int score = 0; + try{ + if ( method_getSmileScore == null ){ + method_getSmileScore = getMethod("getSmileScore"); + } + score = (int)method_getSmileScore.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return score; + } + + private static Method method_getBlinkDetected = null; + public static int getBlinkDetected(Face face) { + int blink = 0; + try{ + if ( method_getBlinkDetected == null ){ + method_getBlinkDetected = getMethod("getBlinkDetected"); + } + blink = (int)method_getBlinkDetected.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return blink; + } + + private static Method method_getFaceRecognized = null; + public static int getFaceRecognized(Face face) { + int faces = 0; + try{ + if ( method_getFaceRecognized == null ){ + method_getFaceRecognized = getMethod("getFaceRecognized"); + } + faces = (int)method_getFaceRecognized.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return faces; + } + + private static Method method_getGazeAngle = null; + public static int getGazeAngle(Face face) { + int angle = 0; + try{ + if ( method_getGazeAngle == null ){ + method_getGazeAngle = getMethod("getGazeAngle"); + } + angle = (int)method_getGazeAngle.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return angle; + } + + private static Method method_getUpDownDirection = null; + public static int getUpDownDirection(Face face) { + int direction = 0; + try{ + if ( method_getUpDownDirection == null ){ + method_getUpDownDirection = getMethod("getUpDownDirection"); + } + direction = (int)method_getUpDownDirection.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return direction; + } + + private static Method method_getLeftRightDirection = null; + public static int getLeftRightDirection(Face face) { + int direction = 0; + try{ + if ( method_getLeftRightDirection == null ){ + method_getLeftRightDirection = getMethod("getLeftRightDirection"); + } + direction = (int)method_getLeftRightDirection.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return direction; + } + + private static Method method_getRollDirection = null; + public static int getRollDirection(Face face) { + int direction = 0; + try{ + if ( method_getRollDirection == null ){ + method_getRollDirection = getMethod("getRollDirection"); + } + direction = (int)method_getRollDirection.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return direction; + } + + private static Method method_getLeftEyeBlinkDegree = null; + public static int getLeftEyeBlinkDegree(Face face) { + int degree = 0; + try{ + if ( method_getLeftEyeBlinkDegree == null ){ + method_getLeftEyeBlinkDegree = getMethod("getLeftEyeBlinkDegree"); + } + degree = (int)method_getLeftEyeBlinkDegree.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return degree; + } + + private static Method method_getRightEyeBlinkDegree = null; + public static int getRightEyeBlinkDegree(Face face) { + int degree = 0; + try{ + if ( method_getRightEyeBlinkDegree == null ){ + method_getRightEyeBlinkDegree = getMethod("getRightEyeBlinkDegree"); + } + degree = (int)method_getRightEyeBlinkDegree.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return degree; + } + + private static Method method_getLeftRightGazeDegree = null; + public static int getLeftRightGazeDegree(Face face) { + int degree = 0; + try{ + if ( method_getLeftRightGazeDegree == null ){ + method_getLeftRightGazeDegree = getMethod("getLeftRightGazeDegree"); + } + degree = (int)method_getLeftRightGazeDegree.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return degree; + } + + private static Method method_getTopBottomGazeDegree = null; + public static int getTopBottomGazeDegree(Face face) { + int degree = 0; + try{ + if ( method_getTopBottomGazeDegree == null ){ + method_getTopBottomGazeDegree = getMethod("getTopBottomGazeDegree"); + } + degree = (int)method_getTopBottomGazeDegree.invoke(face); + }catch(Exception exception){ + exception.printStackTrace(); + } + return degree; + } + + + private static Method getMethod(String name) throws Exception{ + if ( DEBUG ){ + Log.e(TAG, "Debug:" + CLASS_NAME + " no " + name); + return null; + } + if (mExtendFaceClass == null) { + mExtendFaceClass = Class.forName(CLASS_NAME); + } + return mExtendFaceClass.getDeclaredMethod(name); + } +} |