From 4c913801141163362dd5bb7c9784c83f69c11054 Mon Sep 17 00:00:00 2001 From: Zhijun He Date: Mon, 16 Jun 2014 16:42:35 -0700 Subject: Camera: Implement HAL1 and higher HAL API coexistence A higher hal version device like HAL3.2 can be opened as HAL1.0 device if HAL supports it. This only applies to camera API1. Change-Id: I4ae9f59f4317158cc1bd7ed7726e4032cdd1fa07 --- .../integration/CameraBinderTest.java | 31 +++++++++++++ .../mediaframeworktest/unit/CameraOpenTest.java | 53 ++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraOpenTest.java (limited to 'media/tests/MediaFrameworkTest') diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java index 7dba21d..b6bb578 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java @@ -205,6 +205,37 @@ public class CameraBinderTest extends AndroidTestCase { } } + @SmallTest + public void testConnectLegacy() throws Exception { + final int CAMERA_HAL_API_VERSION_1_0 = 0x100; + for (int cameraId = 0; cameraId < mUtils.getGuessedNumCameras(); ++cameraId) { + ICamera cameraUser = null; + ICameraClient dummyCallbacks = new DummyCameraClient(); + + String clientPackageName = getContext().getPackageName(); + + BinderHolder holder = new BinderHolder(); + + try { + CameraBinderDecorator.newInstance(mUtils.getCameraService()) + .connectLegacy(dummyCallbacks, cameraId, CAMERA_HAL_API_VERSION_1_0, + clientPackageName, + CameraBinderTestUtils.USE_CALLING_UID, holder); + cameraUser = ICamera.Stub.asInterface(holder.getBinder()); + assertNotNull(String.format("Camera %s was null", cameraId), cameraUser); + + Log.v(TAG, String.format("Camera %s connected as HAL1 legacy device", cameraId)); + } catch (RuntimeException e) { + // Not all camera device support openLegacy. + Log.i(TAG, "Unable to open camera as HAL1 legacy camera device " + e); + } finally { + if (cameraUser != null) { + cameraUser.disconnect(); + } + } + } + } + static class DummyCameraDeviceCallbacks extends ICameraDeviceCallbacks.Stub { /* diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraOpenTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraOpenTest.java new file mode 100644 index 0000000..14bbe44 --- /dev/null +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/CameraOpenTest.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.mediaframeworktest.unit; + +import android.hardware.Camera; +import android.test.suitebuilder.annotation.SmallTest; +import android.util.Log; + +/** + *
+ * adb shell am instrument \
+ *      -e class 'com.android.mediaframeworktest.unit.CameraOpenTest' \
+ *      -w com.android.mediaframeworktest/.MediaFrameworkUnitTestRunner
+ * 
+ */ +public class CameraOpenTest extends junit.framework.TestCase { + private static String TAG = "CameraOpenTest"; + + private Camera mCamera; + + /** + * Test @hide android.hardware.Camera#openLegacy API that cannot be tested in CTS. + */ + @SmallTest + public void testOpenLegacy() { + int nCameras = Camera.getNumberOfCameras(); + for (int id = 0; id < nCameras; id++) { + try { + mCamera.openLegacy(id, Camera.CAMERA_HAL_API_VERSION_1_0); + } catch (RuntimeException e) { + Log.i(TAG, "Unable to open camera as HAL1 legacy camera device " + e); + } finally { + if (mCamera != null) { + mCamera.release(); + } + } + } + } +} -- cgit v1.1