summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorjunjiez <junjiez@codeaurora.org>2017-09-19 11:15:01 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-11-17 01:49:19 -0800
commitd87fe31b196cc11ba9bec68d51fd1459b27737af (patch)
tree57c0e34277362635a91c4686cd17d873d7ace3b7 /src/com/android
parent1fa22656c1fe62782d287f9427d8e56fbddee8fd (diff)
downloadandroid_packages_apps_Snap-d87fe31b196cc11ba9bec68d51fd1459b27737af.tar.gz
android_packages_apps_Snap-d87fe31b196cc11ba9bec68d51fd1459b27737af.tar.bz2
android_packages_apps_Snap-d87fe31b196cc11ba9bec68d51fd1459b27737af.zip
SnapdragonCamera:support multi camera switch
add a new option in dev options to swtich camera by camera Id. Change-Id: Ieeb6f462024c3b155dc5fb532fd737313b9904de
Diffstat (limited to 'src/com/android')
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java45
-rwxr-xr-x[-rw-r--r--]src/com/android/camera/CaptureUI.java1
-rwxr-xr-xsrc/com/android/camera/SettingsActivity.java1
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java22
4 files changed, 60 insertions, 9 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index 7dd2e59ff..d43f22117 100755
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -655,7 +655,10 @@ public class CaptureModule implements CameraModule, PhotoController,
Log.e(TAG, "onError " + id + " " + error);
mCameraOpenCloseLock.release();
mCamerasOpened = false;
+
if (null != mActivity) {
+ Toast.makeText(mActivity,"open camera error id =" + id,
+ Toast.LENGTH_LONG).show();
mActivity.finish();
}
}
@@ -815,6 +818,8 @@ public class CaptureModule implements CameraModule, PhotoController,
}
public boolean isBackCamera() {
+ String switchValue = mSettingsManager.getValue(SettingsManager.KEY_SWITCH_CAMERA);
+ if (switchValue != null && !switchValue.equals("-1") ) return false;
String value = mSettingsManager.getValue(SettingsManager.KEY_CAMERA_ID);
if (value == null) return true;
if (Integer.parseInt(value) == BAYER_ID) return true;
@@ -973,7 +978,10 @@ public class CaptureModule implements CameraModule, PhotoController,
break;
}
} else {
- createSession(FRONT_ID);
+ int switchId = Integer.parseInt(
+ mSettingsManager.getValue(SettingsManager.KEY_SWITCH_CAMERA));
+ int cameraId = switchId == -1? FRONT_ID : switchId;
+ createSession(cameraId);
}
}
@@ -1051,7 +1059,8 @@ public class CaptureModule implements CameraModule, PhotoController,
// Finally, we start displaying the camera preview.
// for cases where we are in dual mode with mono preview off,
// don't set repeating request for mono
- if(id == MONO_ID && !canStartMonoPreview()) {
+ if(id == MONO_ID && !canStartMonoPreview()
+ && getCameraMode() == DUAL_MODE) {
mCaptureSession[id].capture(mPreviewRequestBuilder[id]
.build(), mCaptureCallback, mCameraHandler);
} else {
@@ -1331,10 +1340,13 @@ public class CaptureModule implements CameraModule, PhotoController,
break;
}
} else {
- if (takeZSLPicture(FRONT_ID)) {
+ int switchId = Integer.parseInt(
+ mSettingsManager.getValue(SettingsManager.KEY_SWITCH_CAMERA));
+ int cameraId = switchId == -1? FRONT_ID : switchId;
+ if(takeZSLPicture(cameraId)) {
return;
}
- lockFocus(FRONT_ID);
+ lockFocus(cameraId);
}
}
}
@@ -2459,7 +2471,10 @@ public class CaptureModule implements CameraModule, PhotoController,
break;
}
} else {
- msg.arg1 = FRONT_ID;
+ int switchId = Integer.parseInt(
+ mSettingsManager.getValue(SettingsManager.KEY_SWITCH_CAMERA));
+ int cameraId = switchId == -1? FRONT_ID : switchId;
+ msg.arg1 = cameraId;
mCameraHandler.sendMessage(msg);
}
mUI.showSurfaceView();
@@ -2800,7 +2815,10 @@ public class CaptureModule implements CameraModule, PhotoController,
}
return 0;
} else {
- return FRONT_ID;
+ int switchId = Integer.parseInt(
+ mSettingsManager.getValue(SettingsManager.KEY_SWITCH_CAMERA));
+ int cameraId = switchId == -1? FRONT_ID : switchId;
+ return cameraId;
}
}
@@ -3083,6 +3101,7 @@ public class CaptureModule implements CameraModule, PhotoController,
private void updateVideoSize() {
String videoSize = mSettingsManager.getValue(SettingsManager.KEY_VIDEO_QUALITY);
+ if (videoSize == null) return;
mVideoSize = parsePictureSize(videoSize);
Size[] prevSizes = mSettingsManager.getSupportedOutputSize(getMainCameraId(),
MediaRecorder.class);
@@ -3642,7 +3661,18 @@ public class CaptureModule implements CameraModule, PhotoController,
updateHFRSetting();
boolean hfr = mHighSpeedCapture && !mHighSpeedRecordingMode;
- mProfile = CamcorderProfile.get(cameraId, size);
+ if (CamcorderProfile.hasProfile(cameraId, size)) {
+ mProfile = CamcorderProfile.get(cameraId, size);
+ } else {
+ if (!"-1".equals(mSettingsManager.getValue(SettingsManager.KEY_SWITCH_CAMERA))) {
+ mProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
+ } else {
+ RotateTextToast.makeText(mActivity, R.string.error_app_unsupported_profile,
+ Toast.LENGTH_LONG).show();
+ return;
+ }
+ }
+
int videoWidth = mProfile.videoFrameWidth;
int videoHeight = mProfile.videoFrameHeight;
mUnsupportedResolution = false;
@@ -4587,6 +4617,7 @@ public class CaptureModule implements CameraModule, PhotoController,
case SettingsManager.KEY_CAMERA_ID:
case SettingsManager.KEY_MONO_ONLY:
case SettingsManager.KEY_CLEARSIGHT:
+ case SettingsManager.KEY_SWITCH_CAMERA:
case SettingsManager.KEY_MONO_PREVIEW:
if (count == 0) restartAll();
return;
diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java
index d0b129ad9..9a52396dd 100644..100755
--- a/src/com/android/camera/CaptureUI.java
+++ b/src/com/android/camera/CaptureUI.java
@@ -663,6 +663,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
public void initSwitchCamera() {
mFrontBackSwitcher.setVisibility(View.INVISIBLE);
String value = mSettingsManager.getValue(SettingsManager.KEY_CAMERA_ID);
+ Log.d(TAG,"value of KEY_CAMERA_ID is null? " + (value==null));
if (value == null)
return;
diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java
index eece4116a..b7ef43332 100755
--- a/src/com/android/camera/SettingsActivity.java
+++ b/src/com/android/camera/SettingsActivity.java
@@ -380,6 +380,7 @@ public class SettingsActivity extends PreferenceActivity {
updatePreference(SettingsManager.KEY_VIDEO_HIGH_FRAME_RATE);
updatePreference(SettingsManager.KEY_VIDEO_ENCODER);
updatePreference(SettingsManager.KEY_ZOOM);
+ updatePreference(SettingsManager.KEY_SWITCH_CAMERA);
updatePictureSizePreferenceButton();
Map<String, SettingsManager.Values> map = mSettingsManager.getValuesMap();
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index c99702708..675970b3d 100755
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -115,6 +115,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
public static final String KEY_SCEND_MODE_INSTRUCTIONAL = "pref_camera2_scenemode_instructional";
public static final String KEY_REDEYE_REDUCTION = "pref_camera2_redeyereduction_key";
public static final String KEY_CAMERA_ID = "pref_camera2_id_key";
+ public static final String KEY_SWITCH_CAMERA = "pref_camera2_switch_camera_key";
public static final String KEY_PICTURE_SIZE = "pref_camera2_picturesize_key";
public static final String KEY_ISO = "pref_camera2_iso_key";
public static final String KEY_EXPOSURE = "pref_camera2_exposure_key";
@@ -218,6 +219,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
String cameraId = cameraIdList[i];
CameraCharacteristics characteristics
= manager.getCameraCharacteristics(cameraId);
+ Log.d(TAG,"cameraIdList size ="+cameraIdList.length);
byte monoOnly = 0;
try {
monoOnly = characteristics.get(CaptureModule.MetaDataMonoOnlyKey);
@@ -886,11 +888,26 @@ public class SettingsManager implements ListMenu.SettingsListener {
private void buildCameraId() {
int numOfCameras = mCharacteristics.size();
+ CharSequence[] fullEntryValues = new CharSequence[numOfCameras + 1];
+ CharSequence[] fullEntries = new CharSequence[numOfCameras + 1];
+ for(int i = 0; i < numOfCameras ; i++) {
+ int facing = mCharacteristics.get(i).get(CameraCharacteristics.LENS_FACING);
+ String facingString =
+ facing == CameraCharacteristics.LENS_FACING_FRONT? "front" : "back";
+ fullEntries[i] = "camera " + i +" facing:"+facingString;
+ fullEntryValues[i] = "" + i;
+ Log.d(TAG,"add "+fullEntries[i]+"="+ fullEntryValues[i]);
+ }
+ fullEntries[numOfCameras] = "disable";
+ fullEntryValues[numOfCameras] = "" + -1;
+ ListPreference switchPref = mPreferenceGroup.findPreference(KEY_SWITCH_CAMERA);
+ switchPref.setEntries(fullEntries);
+ switchPref.setEntryValues(fullEntryValues);
if (!mIsFrontCameraPresent) {
+ Log.d(TAG,"no front camera,remove camera id pref");
removePreference(mPreferenceGroup, KEY_CAMERA_ID);
return;
}
-
CharSequence[] entryValues = new CharSequence[numOfCameras];
CharSequence[] entries = new CharSequence[numOfCameras];
//TODO: Modify this after bayer/mono/front/back determination is done
@@ -997,6 +1014,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
supported.add("off");
ListPreference videoQuality = mPreferenceGroup.findPreference(KEY_VIDEO_QUALITY);
+ if (videoQuality == null) return supported;
String videoSizeStr = videoQuality.getValue();
if (videoSizeStr != null) {
Size videoSize = parseSize(videoSizeStr);
@@ -1365,8 +1383,8 @@ public class SettingsManager implements ListMenu.SettingsListener {
private boolean isCurrentVideoResolutionSupportedByEncoder(VideoEncoderCap encoderCap) {
boolean supported = false;
ListPreference videoQuality = mPreferenceGroup.findPreference(KEY_VIDEO_QUALITY);
+ if (videoQuality == null) return supported;
String videoSizeStr = videoQuality.getValue();
-
if (videoSizeStr != null) {
Size videoSize = parseSize(videoSizeStr);