summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/hardware/ICameraService.aidl3
-rw-r--r--core/java/android/hardware/camera2/CameraManager.java13
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java12
3 files changed, 25 insertions, 3 deletions
diff --git a/core/java/android/hardware/ICameraService.aidl b/core/java/android/hardware/ICameraService.aidl
index fc54828..542af6a 100644
--- a/core/java/android/hardware/ICameraService.aidl
+++ b/core/java/android/hardware/ICameraService.aidl
@@ -22,6 +22,7 @@ import android.hardware.IProCameraUser;
import android.hardware.IProCameraCallbacks;
import android.hardware.camera2.ICameraDeviceUser;
import android.hardware.camera2.ICameraDeviceCallbacks;
+import android.hardware.camera2.impl.CameraMetadataNative;
import android.hardware.camera2.utils.BinderHolder;
import android.hardware.ICameraServiceListener;
import android.hardware.CameraInfo;
@@ -58,4 +59,6 @@ interface ICameraService
int addListener(ICameraServiceListener listener);
int removeListener(ICameraServiceListener listener);
+
+ int getCameraCharacteristics(int cameraId, out CameraMetadataNative info);
}
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java
index af0512e..798ad7b 100644
--- a/core/java/android/hardware/camera2/CameraManager.java
+++ b/core/java/android/hardware/camera2/CameraManager.java
@@ -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(new CameraMetadataNative());
+ return new CameraCharacteristics(info);
}
/**
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java
index 9d8489c..aef61c7 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java
@@ -68,6 +68,7 @@ public class CameraDeviceBinderTest extends AndroidTestCase {
}
class IsMetadataNotEmpty extends ArgumentMatcher<CameraMetadataNative> {
+ @Override
public boolean matches(Object obj) {
return !((CameraMetadataNative) obj).isEmpty();
}
@@ -273,6 +274,17 @@ public class CameraDeviceBinderTest extends AndroidTestCase {
}
@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
public void testWaitUntilIdle() throws Exception {
CaptureRequest.Builder builder = createDefaultBuilder(/* needStream */true);
int requestIdStreaming = submitCameraRequest(builder.build(), /* streaming */true);