2323#include " JNIHelp.h"
2424#include " android_runtime/AndroidRuntime.h"
2525
26+ #include < cutils/properties.h>
2627#include < utils/Vector.h>
2728
2829#include < gui/SurfaceTexture.h>
@@ -38,6 +39,7 @@ struct fields_t {
3839 jfieldID surfaceTexture;
3940 jfieldID facing;
4041 jfieldID orientation;
42+ jfieldID canDisableShutterSound;
4143 jfieldID face_rect;
4244 jfieldID face_score;
4345 jfieldID rect_left;
@@ -453,6 +455,12 @@ static void android_hardware_Camera_getCameraInfo(JNIEnv *env, jobject thiz,
453455 }
454456 env->SetIntField (info_obj, fields.facing , cameraInfo.facing );
455457 env->SetIntField (info_obj, fields.orientation , cameraInfo.orientation );
458+
459+ char value[PROPERTY_VALUE_MAX];
460+ property_get (" ro.camera.sound.forced" , value, " 0" );
461+ jboolean canDisableShutterSound = (strncmp (value, " 0" , 2 ) == 0 );
462+ env->SetBooleanField (info_obj, fields.canDisableShutterSound ,
463+ canDisableShutterSound);
456464}
457465
458466// connect to camera service
@@ -962,6 +970,8 @@ int register_android_hardware_Camera(JNIEnv *env)
962970 ANDROID_GRAPHICS_SURFACETEXTURE_JNI_ID, " I" , &fields.surfaceTexture },
963971 { " android/hardware/Camera$CameraInfo" , " facing" , " I" , &fields.facing },
964972 { " android/hardware/Camera$CameraInfo" , " orientation" , " I" , &fields.orientation },
973+ { " android/hardware/Camera$CameraInfo" , " canDisableShutterSound" , " Z" ,
974+ &fields.canDisableShutterSound },
965975 { " android/hardware/Camera$Face" , " rect" , " Landroid/graphics/Rect;" , &fields.face_rect },
966976 { " android/hardware/Camera$Face" , " score" , " I" , &fields.face_score },
967977 { " android/graphics/Rect" , " left" , " I" , &fields.rect_left },
0 commit comments