am 822ac0ba: Merge "Camera2: Implement CameraManager#getCameraCharacteristics" into klp-dev

* commit '822ac0bada06b2185b4d5e8304160b680a72cff2':
  Camera2: Implement CameraManager#getCameraCharacteristics
This commit is contained in:
Zhijun He
2013-09-25 17:00:05 -07:00
committed by Android Git Automerger
3 changed files with 25 additions and 3 deletions

View File

@@ -22,6 +22,7 @@ import android.hardware.IProCameraUser;
import android.hardware.IProCameraCallbacks; import android.hardware.IProCameraCallbacks;
import android.hardware.camera2.ICameraDeviceUser; import android.hardware.camera2.ICameraDeviceUser;
import android.hardware.camera2.ICameraDeviceCallbacks; import android.hardware.camera2.ICameraDeviceCallbacks;
import android.hardware.camera2.impl.CameraMetadataNative;
import android.hardware.camera2.utils.BinderHolder; import android.hardware.camera2.utils.BinderHolder;
import android.hardware.ICameraServiceListener; import android.hardware.ICameraServiceListener;
import android.hardware.CameraInfo; import android.hardware.CameraInfo;
@@ -58,4 +59,6 @@ interface ICameraService
int addListener(ICameraServiceListener listener); int addListener(ICameraServiceListener listener);
int removeListener(ICameraServiceListener listener); int removeListener(ICameraServiceListener listener);
int getCameraCharacteristics(int cameraId, out CameraMetadataNative info);
} }

View File

@@ -176,10 +176,17 @@ public final class CameraManager {
} }
} }
// TODO: implement and call a service function to get the capabilities on C++ side CameraMetadataNative info = new CameraMetadataNative();
try {
mCameraService.getCameraCharacteristics(Integer.valueOf(cameraId), info);
} catch(CameraRuntimeException e) {
throw e.asChecked();
} catch(RemoteException e) {
// impossible
return null;
}
// TODO: get properties from service return new CameraCharacteristics(info);
return new CameraCharacteristics(new CameraMetadataNative());
} }
/** /**

View File

@@ -68,6 +68,7 @@ public class CameraDeviceBinderTest extends AndroidTestCase {
} }
class IsMetadataNotEmpty extends ArgumentMatcher<CameraMetadataNative> { class IsMetadataNotEmpty extends ArgumentMatcher<CameraMetadataNative> {
@Override
public boolean matches(Object obj) { public boolean matches(Object obj) {
return !((CameraMetadataNative) obj).isEmpty(); return !((CameraMetadataNative) obj).isEmpty();
} }
@@ -272,6 +273,17 @@ public class CameraDeviceBinderTest extends AndroidTestCase {
assertNotNull(info.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS)); assertNotNull(info.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
} }
@SmallTest
public void testCameraCharacteristics() throws RemoteException {
CameraMetadataNative info = new CameraMetadataNative();
int status = mUtils.getCameraService().getCameraCharacteristics(mCameraId, /*out*/info);
assertEquals(CameraBinderTestUtils.NO_ERROR, status);
assertFalse(info.isEmpty());
assertNotNull(info.get(CameraCharacteristics.SCALER_AVAILABLE_FORMATS));
}
@SmallTest @SmallTest
public void testWaitUntilIdle() throws Exception { public void testWaitUntilIdle() throws Exception {
CaptureRequest.Builder builder = createDefaultBuilder(/* needStream */true); CaptureRequest.Builder builder = createDefaultBuilder(/* needStream */true);