Use SetByteArrayRegion to minimize copy overhead and JNI calls.
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp
index b841076..2874be4 100644
--- a/core/jni/android_hardware_Camera.cpp
+++ b/core/jni/android_hardware_Camera.cpp
@@ -143,10 +143,7 @@
                 LOGE("Couldn't allocate byte array for JPEG data");
                 env->ExceptionClear();
             } else {
-                jbyte *bytes = static_cast<jbyte*>(env->GetPrimitiveArrayCritical(obj, NULL));
-                memcpy(bytes, data, size);
-                env->ReleasePrimitiveArrayCritical(obj, bytes, 0);
-
+                env->SetByteArrayRegion(obj, 0, size, data);
             }
         } else {
             LOGE("image heap is NULL");