summaryrefslogtreecommitdiffstats
path: root/src_wrapper/org/codeaurora/snapcam/wrapper/ExtendedFaceWrapper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src_wrapper/org/codeaurora/snapcam/wrapper/ExtendedFaceWrapper.java')
-rw-r--r--src_wrapper/org/codeaurora/snapcam/wrapper/ExtendedFaceWrapper.java233
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);
+ }
+}