Merge pull request #800 from asmorkalov:android_cam_idx_semantic
This commit is contained in:
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r2.2.0.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r2.2.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r2.3.3.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r2.3.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r3.0.1.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r3.0.1.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.0.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.3.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.0.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.1.1.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.1.1.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.2.0.so
vendored
BIN
3rdparty/lib/armeabi-v7a/libnative_camera_r4.2.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r2.2.0.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r2.2.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r2.3.3.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r2.3.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r3.0.1.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r3.0.1.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r4.0.0.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r4.0.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r4.0.3.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r4.0.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r4.1.1.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r4.1.1.so
vendored
Binary file not shown.
BIN
3rdparty/lib/armeabi/libnative_camera_r4.2.0.so
vendored
BIN
3rdparty/lib/armeabi/libnative_camera_r4.2.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/mips/libnative_camera_r4.0.3.so
vendored
BIN
3rdparty/lib/mips/libnative_camera_r4.0.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/mips/libnative_camera_r4.1.1.so
vendored
BIN
3rdparty/lib/mips/libnative_camera_r4.1.1.so
vendored
Binary file not shown.
BIN
3rdparty/lib/mips/libnative_camera_r4.2.0.so
vendored
BIN
3rdparty/lib/mips/libnative_camera_r4.2.0.so
vendored
Binary file not shown.
BIN
3rdparty/lib/x86/libnative_camera_r2.3.3.so
vendored
BIN
3rdparty/lib/x86/libnative_camera_r2.3.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/x86/libnative_camera_r3.0.1.so
vendored
BIN
3rdparty/lib/x86/libnative_camera_r3.0.1.so
vendored
Binary file not shown.
BIN
3rdparty/lib/x86/libnative_camera_r4.0.3.so
vendored
BIN
3rdparty/lib/x86/libnative_camera_r4.0.3.so
vendored
Binary file not shown.
BIN
3rdparty/lib/x86/libnative_camera_r4.1.1.so
vendored
BIN
3rdparty/lib/x86/libnative_camera_r4.1.1.so
vendored
Binary file not shown.
BIN
3rdparty/lib/x86/libnative_camera_r4.2.0.so
vendored
BIN
3rdparty/lib/x86/libnative_camera_r4.2.0.so
vendored
Binary file not shown.
@@ -362,6 +362,9 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
|
|||||||
typedef sp<Camera> (*Android23ConnectFuncType)(int);
|
typedef sp<Camera> (*Android23ConnectFuncType)(int);
|
||||||
typedef sp<Camera> (*Android3DConnectFuncType)(int, int);
|
typedef sp<Camera> (*Android3DConnectFuncType)(int, int);
|
||||||
|
|
||||||
|
const int BACK_CAMERA_INDEX = 99;
|
||||||
|
const int FRONT_CAMERA_INDEX = 98;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
CAMERA_SUPPORT_MODE_2D = 0x01, /* Camera Sensor supports 2D mode. */
|
CAMERA_SUPPORT_MODE_2D = 0x01, /* Camera Sensor supports 2D mode. */
|
||||||
CAMERA_SUPPORT_MODE_3D = 0x02, /* Camera Sensor supports 3D mode. */
|
CAMERA_SUPPORT_MODE_3D = 0x02, /* Camera Sensor supports 3D mode. */
|
||||||
@@ -373,7 +376,51 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
|
|||||||
const char Android23ConnectName[] = "_ZN7android6Camera7connectEi";
|
const char Android23ConnectName[] = "_ZN7android6Camera7connectEi";
|
||||||
const char Android3DConnectName[] = "_ZN7android6Camera7connectEii";
|
const char Android3DConnectName[] = "_ZN7android6Camera7connectEii";
|
||||||
|
|
||||||
LOGD("CameraHandler::initCameraConnect(%p, %d, %p, %p)", callback, cameraId, userData, prevCameraParameters);
|
int localCameraIndex = cameraId;
|
||||||
|
|
||||||
|
#if !defined(ANDROID_r2_2_0)
|
||||||
|
if (cameraId == BACK_CAMERA_INDEX)
|
||||||
|
{
|
||||||
|
LOGD("Back camera selected");
|
||||||
|
for (int i = 0; i < Camera::getNumberOfCameras(); i++)
|
||||||
|
{
|
||||||
|
CameraInfo info;
|
||||||
|
Camera::getCameraInfo(i, &info);
|
||||||
|
if (info.facing == CAMERA_FACING_BACK)
|
||||||
|
{
|
||||||
|
localCameraIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (cameraId == FRONT_CAMERA_INDEX)
|
||||||
|
{
|
||||||
|
LOGD("Front camera selected");
|
||||||
|
for (int i = 0; i < Camera::getNumberOfCameras(); i++)
|
||||||
|
{
|
||||||
|
CameraInfo info;
|
||||||
|
Camera::getCameraInfo(i, &info);
|
||||||
|
if (info.facing == CAMERA_FACING_FRONT)
|
||||||
|
{
|
||||||
|
localCameraIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (localCameraIndex == BACK_CAMERA_INDEX)
|
||||||
|
{
|
||||||
|
LOGE("Back camera not found!");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
else if (localCameraIndex == FRONT_CAMERA_INDEX)
|
||||||
|
{
|
||||||
|
LOGE("Front camera not found!");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
LOGD("CameraHandler::initCameraConnect(%p, %d, %p, %p)", callback, localCameraIndex, userData, prevCameraParameters);
|
||||||
|
|
||||||
sp<Camera> camera = 0;
|
sp<Camera> camera = 0;
|
||||||
|
|
||||||
@@ -381,8 +428,8 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
|
|||||||
|
|
||||||
if (!CameraHALHandle)
|
if (!CameraHALHandle)
|
||||||
{
|
{
|
||||||
LOGE("Cannot link to \"libcamera_client.so\"");
|
LOGE("Cannot link to \"libcamera_client.so\"");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset errors
|
// reset errors
|
||||||
@@ -390,24 +437,24 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
|
|||||||
|
|
||||||
if (Android22ConnectFuncType Android22Connect = (Android22ConnectFuncType)dlsym(CameraHALHandle, Android22ConnectName))
|
if (Android22ConnectFuncType Android22Connect = (Android22ConnectFuncType)dlsym(CameraHALHandle, Android22ConnectName))
|
||||||
{
|
{
|
||||||
LOGD("Connecting to CameraService v 2.2");
|
LOGD("Connecting to CameraService v 2.2");
|
||||||
camera = Android22Connect();
|
camera = Android22Connect();
|
||||||
}
|
}
|
||||||
else if (Android23ConnectFuncType Android23Connect = (Android23ConnectFuncType)dlsym(CameraHALHandle, Android23ConnectName))
|
else if (Android23ConnectFuncType Android23Connect = (Android23ConnectFuncType)dlsym(CameraHALHandle, Android23ConnectName))
|
||||||
{
|
{
|
||||||
LOGD("Connecting to CameraService v 2.3");
|
LOGD("Connecting to CameraService v 2.3");
|
||||||
camera = Android23Connect(cameraId);
|
camera = Android23Connect(localCameraIndex);
|
||||||
}
|
}
|
||||||
else if (Android3DConnectFuncType Android3DConnect = (Android3DConnectFuncType)dlsym(CameraHALHandle, Android3DConnectName))
|
else if (Android3DConnectFuncType Android3DConnect = (Android3DConnectFuncType)dlsym(CameraHALHandle, Android3DConnectName))
|
||||||
{
|
{
|
||||||
LOGD("Connecting to CameraService v 3D");
|
LOGD("Connecting to CameraService v 3D");
|
||||||
camera = Android3DConnect(cameraId, CAMERA_SUPPORT_MODE_2D);
|
camera = Android3DConnect(localCameraIndex, CAMERA_SUPPORT_MODE_2D);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dlclose(CameraHALHandle);
|
dlclose(CameraHALHandle);
|
||||||
LOGE("Cannot connect to CameraService. Connect method was not found!");
|
LOGE("Cannot connect to CameraService. Connect method was not found!");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
dlclose(CameraHALHandle);
|
dlclose(CameraHALHandle);
|
||||||
@@ -422,7 +469,7 @@ CameraHandler* CameraHandler::initCameraConnect(const CameraCallback& callback,
|
|||||||
camera->setListener(handler);
|
camera->setListener(handler);
|
||||||
|
|
||||||
handler->camera = camera;
|
handler->camera = camera;
|
||||||
handler->cameraId = cameraId;
|
handler->cameraId = localCameraIndex;
|
||||||
|
|
||||||
if (prevCameraParameters != 0)
|
if (prevCameraParameters != 0)
|
||||||
{
|
{
|
||||||
|
@@ -305,6 +305,8 @@ enum
|
|||||||
CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion)
|
CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion)
|
||||||
|
|
||||||
CV_CAP_ANDROID =1000, // Android
|
CV_CAP_ANDROID =1000, // Android
|
||||||
|
CV_CAP_ANDROID_BACK =CV_CAP_ANDROID+99, // Android back camera
|
||||||
|
CV_CAP_ANDROID_FRONT =CV_CAP_ANDROID+98, // Android front camera
|
||||||
|
|
||||||
CV_CAP_XIAPI =1100, // XIMEA Camera API
|
CV_CAP_XIAPI =1100, // XIMEA Camera API
|
||||||
|
|
||||||
|
@@ -4,8 +4,8 @@
|
|||||||
<attr name="show_fps" format="boolean"/>
|
<attr name="show_fps" format="boolean"/>
|
||||||
<attr name="camera_id" format="integer" >
|
<attr name="camera_id" format="integer" >
|
||||||
<enum name="any" value="-1" />
|
<enum name="any" value="-1" />
|
||||||
<enum name="back" value="0" />
|
<enum name="back" value="99" />
|
||||||
<enum name="front" value="1" />
|
<enum name="front" value="98" />
|
||||||
</attr>
|
</attr>
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -47,10 +47,14 @@ public abstract class CameraBridgeViewBase extends SurfaceView implements Surfac
|
|||||||
protected int mMaxWidth;
|
protected int mMaxWidth;
|
||||||
protected float mScale = 0;
|
protected float mScale = 0;
|
||||||
protected int mPreviewFormat = Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA;
|
protected int mPreviewFormat = Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA;
|
||||||
protected int mCameraIndex = -1;
|
protected int mCameraIndex = CAMERA_ID_ANY;
|
||||||
protected boolean mEnabled;
|
protected boolean mEnabled;
|
||||||
protected FpsMeter mFpsMeter = null;
|
protected FpsMeter mFpsMeter = null;
|
||||||
|
|
||||||
|
public static final int CAMERA_ID_ANY = -1;
|
||||||
|
public static final int CAMERA_ID_BACK = 99;
|
||||||
|
public static final int CAMERA_ID_FRONT = 98;
|
||||||
|
|
||||||
public CameraBridgeViewBase(Context context, int cameraId) {
|
public CameraBridgeViewBase(Context context, int cameraId) {
|
||||||
super(context);
|
super(context);
|
||||||
mCameraIndex = cameraId;
|
mCameraIndex = cameraId;
|
||||||
|
@@ -6,6 +6,7 @@ import android.content.Context;
|
|||||||
import android.graphics.ImageFormat;
|
import android.graphics.ImageFormat;
|
||||||
import android.graphics.SurfaceTexture;
|
import android.graphics.SurfaceTexture;
|
||||||
import android.hardware.Camera;
|
import android.hardware.Camera;
|
||||||
|
import android.hardware.Camera.CameraInfo;
|
||||||
import android.hardware.Camera.PreviewCallback;
|
import android.hardware.Camera.PreviewCallback;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
@@ -68,7 +69,7 @@ public class JavaCameraView extends CameraBridgeViewBase implements PreviewCallb
|
|||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
mCamera = null;
|
mCamera = null;
|
||||||
|
|
||||||
if (mCameraIndex == -1) {
|
if (mCameraIndex == CAMERA_ID_ANY) {
|
||||||
Log.d(TAG, "Trying to open camera with old open()");
|
Log.d(TAG, "Trying to open camera with old open()");
|
||||||
try {
|
try {
|
||||||
mCamera = Camera.open();
|
mCamera = Camera.open();
|
||||||
@@ -92,11 +93,39 @@ public class JavaCameraView extends CameraBridgeViewBase implements PreviewCallb
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
|
||||||
Log.d(TAG, "Trying to open camera with new open(" + Integer.valueOf(mCameraIndex) + ")");
|
int localCameraIndex = mCameraIndex;
|
||||||
try {
|
if (mCameraIndex == CAMERA_ID_BACK) {
|
||||||
mCamera = Camera.open(mCameraIndex);
|
Log.i(TAG, "Trying to open back camera");
|
||||||
} catch (RuntimeException e) {
|
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
|
||||||
Log.e(TAG, "Camera #" + mCameraIndex + "failed to open: " + e.getLocalizedMessage());
|
for (int camIdx = 0; camIdx < Camera.getNumberOfCameras(); ++camIdx) {
|
||||||
|
Camera.getCameraInfo( camIdx, cameraInfo );
|
||||||
|
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
|
||||||
|
localCameraIndex = camIdx;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (mCameraIndex == CAMERA_ID_FRONT) {
|
||||||
|
Log.i(TAG, "Trying to open front camera");
|
||||||
|
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
|
||||||
|
for (int camIdx = 0; camIdx < Camera.getNumberOfCameras(); ++camIdx) {
|
||||||
|
Camera.getCameraInfo( camIdx, cameraInfo );
|
||||||
|
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
|
||||||
|
localCameraIndex = camIdx;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (localCameraIndex == CAMERA_ID_BACK) {
|
||||||
|
Log.e(TAG, "Back camera not found!");
|
||||||
|
} else if (localCameraIndex == CAMERA_ID_FRONT) {
|
||||||
|
Log.e(TAG, "Front camera not found!");
|
||||||
|
} else {
|
||||||
|
Log.d(TAG, "Trying to open camera with new open(" + Integer.valueOf(localCameraIndex) + ")");
|
||||||
|
try {
|
||||||
|
mCamera = Camera.open(localCameraIndex);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
Log.e(TAG, "Camera #" + localCameraIndex + "failed to open: " + e.getLocalizedMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user