Merge "DO NOT MERGE Force slowJpegMode on certain camera1 apps" into tm-qpr-dev
This commit is contained in:
@@ -17,12 +17,7 @@
|
|||||||
package android.hardware;
|
package android.hardware;
|
||||||
|
|
||||||
import static android.system.OsConstants.EACCES;
|
import static android.system.OsConstants.EACCES;
|
||||||
import static android.system.OsConstants.EBUSY;
|
|
||||||
import static android.system.OsConstants.EINVAL;
|
|
||||||
import static android.system.OsConstants.ENODEV;
|
import static android.system.OsConstants.ENODEV;
|
||||||
import static android.system.OsConstants.ENOSYS;
|
|
||||||
import static android.system.OsConstants.EOPNOTSUPP;
|
|
||||||
import static android.system.OsConstants.EUSERS;
|
|
||||||
|
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.annotation.SdkConstant;
|
import android.annotation.SdkConstant;
|
||||||
@@ -56,6 +51,7 @@ import android.util.Log;
|
|||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import android.view.SurfaceHolder;
|
import android.view.SurfaceHolder;
|
||||||
|
|
||||||
|
import com.android.internal.R;
|
||||||
import com.android.internal.annotations.GuardedBy;
|
import com.android.internal.annotations.GuardedBy;
|
||||||
import com.android.internal.app.IAppOpsCallback;
|
import com.android.internal.app.IAppOpsCallback;
|
||||||
import com.android.internal.app.IAppOpsService;
|
import com.android.internal.app.IAppOpsService;
|
||||||
@@ -491,8 +487,22 @@ public class Camera {
|
|||||||
|
|
||||||
boolean overrideToPortrait = CameraManager.shouldOverrideToPortrait(
|
boolean overrideToPortrait = CameraManager.shouldOverrideToPortrait(
|
||||||
ActivityThread.currentApplication().getApplicationContext());
|
ActivityThread.currentApplication().getApplicationContext());
|
||||||
|
boolean forceSlowJpegMode = shouldForceSlowJpegMode();
|
||||||
return native_setup(new WeakReference<Camera>(this), cameraId,
|
return native_setup(new WeakReference<Camera>(this), cameraId,
|
||||||
ActivityThread.currentOpPackageName(), overrideToPortrait);
|
ActivityThread.currentOpPackageName(), overrideToPortrait, forceSlowJpegMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean shouldForceSlowJpegMode() {
|
||||||
|
Context applicationContext = ActivityThread.currentApplication().getApplicationContext();
|
||||||
|
String[] slowJpegPackageNames = applicationContext.getResources().getStringArray(
|
||||||
|
R.array.config_forceSlowJpegModeList);
|
||||||
|
String callingPackageName = applicationContext.getPackageName();
|
||||||
|
for (String packageName : slowJpegPackageNames) {
|
||||||
|
if (TextUtils.equals(packageName, callingPackageName)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** used by Camera#open, Camera#open(int) */
|
/** used by Camera#open, Camera#open(int) */
|
||||||
@@ -563,7 +573,7 @@ public class Camera {
|
|||||||
|
|
||||||
@UnsupportedAppUsage
|
@UnsupportedAppUsage
|
||||||
private native int native_setup(Object cameraThis, int cameraId, String packageName,
|
private native int native_setup(Object cameraThis, int cameraId, String packageName,
|
||||||
boolean overrideToPortrait);
|
boolean overrideToPortrait, boolean forceSlowJpegMode);
|
||||||
|
|
||||||
private native final void native_release();
|
private native final void native_release();
|
||||||
|
|
||||||
|
|||||||
@@ -556,7 +556,8 @@ static void android_hardware_Camera_getCameraInfo(JNIEnv *env, jobject thiz, jin
|
|||||||
// connect to camera service
|
// connect to camera service
|
||||||
static jint android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, jobject weak_this,
|
static jint android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, jobject weak_this,
|
||||||
jint cameraId, jstring clientPackageName,
|
jint cameraId, jstring clientPackageName,
|
||||||
jboolean overrideToPortrait) {
|
jboolean overrideToPortrait,
|
||||||
|
jboolean forceSlowJpegMode) {
|
||||||
// Convert jstring to String16
|
// Convert jstring to String16
|
||||||
const char16_t *rawClientName = reinterpret_cast<const char16_t*>(
|
const char16_t *rawClientName = reinterpret_cast<const char16_t*>(
|
||||||
env->GetStringChars(clientPackageName, NULL));
|
env->GetStringChars(clientPackageName, NULL));
|
||||||
@@ -568,7 +569,7 @@ static jint android_hardware_Camera_native_setup(JNIEnv *env, jobject thiz, jobj
|
|||||||
int targetSdkVersion = android_get_application_target_sdk_version();
|
int targetSdkVersion = android_get_application_target_sdk_version();
|
||||||
sp<Camera> camera =
|
sp<Camera> camera =
|
||||||
Camera::connect(cameraId, clientName, Camera::USE_CALLING_UID, Camera::USE_CALLING_PID,
|
Camera::connect(cameraId, clientName, Camera::USE_CALLING_UID, Camera::USE_CALLING_PID,
|
||||||
targetSdkVersion, overrideToPortrait);
|
targetSdkVersion, overrideToPortrait, forceSlowJpegMode);
|
||||||
if (camera == NULL) {
|
if (camera == NULL) {
|
||||||
return -EACCES;
|
return -EACCES;
|
||||||
}
|
}
|
||||||
@@ -1054,7 +1055,7 @@ static const JNINativeMethod camMethods[] = {
|
|||||||
{"getNumberOfCameras", "()I", (void *)android_hardware_Camera_getNumberOfCameras},
|
{"getNumberOfCameras", "()I", (void *)android_hardware_Camera_getNumberOfCameras},
|
||||||
{"_getCameraInfo", "(IZLandroid/hardware/Camera$CameraInfo;)V",
|
{"_getCameraInfo", "(IZLandroid/hardware/Camera$CameraInfo;)V",
|
||||||
(void *)android_hardware_Camera_getCameraInfo},
|
(void *)android_hardware_Camera_getCameraInfo},
|
||||||
{"native_setup", "(Ljava/lang/Object;ILjava/lang/String;Z)I",
|
{"native_setup", "(Ljava/lang/Object;ILjava/lang/String;ZZ)I",
|
||||||
(void *)android_hardware_Camera_native_setup},
|
(void *)android_hardware_Camera_native_setup},
|
||||||
{"native_release", "()V", (void *)android_hardware_Camera_release},
|
{"native_release", "()V", (void *)android_hardware_Camera_release},
|
||||||
{"setPreviewSurface", "(Landroid/view/Surface;)V",
|
{"setPreviewSurface", "(Landroid/view/Surface;)V",
|
||||||
|
|||||||
@@ -5050,6 +5050,11 @@
|
|||||||
of known compatibility issues. -->
|
of known compatibility issues. -->
|
||||||
<string-array name="config_highRefreshRateBlacklist"></string-array>
|
<string-array name="config_highRefreshRateBlacklist"></string-array>
|
||||||
|
|
||||||
|
<!-- The list of packages to force slowJpegMode for Apps using Camera API1 -->
|
||||||
|
<string-array name="config_forceSlowJpegModeList" translatable="false">
|
||||||
|
<!-- Add packages here -->
|
||||||
|
</string-array>
|
||||||
|
|
||||||
<!-- Whether or not to hide the navigation bar when the soft keyboard is visible in order to
|
<!-- Whether or not to hide the navigation bar when the soft keyboard is visible in order to
|
||||||
create additional screen real estate outside beyond the keyboard. Note that the user needs
|
create additional screen real estate outside beyond the keyboard. Note that the user needs
|
||||||
to have a confirmed way to dismiss the keyboard when desired. -->
|
to have a confirmed way to dismiss the keyboard when desired. -->
|
||||||
|
|||||||
@@ -4216,6 +4216,7 @@
|
|||||||
|
|
||||||
<java-symbol type="string" name="config_factoryResetPackage" />
|
<java-symbol type="string" name="config_factoryResetPackage" />
|
||||||
<java-symbol type="array" name="config_highRefreshRateBlacklist" />
|
<java-symbol type="array" name="config_highRefreshRateBlacklist" />
|
||||||
|
<java-symbol type="array" name="config_forceSlowJpegModeList" />
|
||||||
|
|
||||||
<java-symbol type="layout" name="chooser_dialog" />
|
<java-symbol type="layout" name="chooser_dialog" />
|
||||||
<java-symbol type="layout" name="chooser_dialog_item" />
|
<java-symbol type="layout" name="chooser_dialog_item" />
|
||||||
|
|||||||
@@ -161,7 +161,8 @@ public class CameraBinderTest extends AndroidTestCase {
|
|||||||
ICameraService.USE_CALLING_UID,
|
ICameraService.USE_CALLING_UID,
|
||||||
ICameraService.USE_CALLING_PID,
|
ICameraService.USE_CALLING_PID,
|
||||||
getContext().getApplicationInfo().targetSdkVersion,
|
getContext().getApplicationInfo().targetSdkVersion,
|
||||||
/*overrideToPortrait*/false);
|
/*overrideToPortrait*/false,
|
||||||
|
/*forceSlowJpegMode*/false);
|
||||||
assertNotNull(String.format("Camera %s was null", cameraId), cameraUser);
|
assertNotNull(String.format("Camera %s was null", cameraId), cameraUser);
|
||||||
|
|
||||||
Log.v(TAG, String.format("Camera %s connected", cameraId));
|
Log.v(TAG, String.format("Camera %s connected", cameraId));
|
||||||
|
|||||||
Reference in New Issue
Block a user