/AndroidUSBCamera

Android USB Camera

Primary LanguageC

AndroidUSBCamera

android usb camera on non-rooted Android devices.
在Android设备上使用外接usb摄像头的项目,无需root权限。

use step:

1.init view and camera

mCameraView.setAspectRatio(PREVIEW_WIDTH / (float)PREVIEW_HEIGHT);

camera = new USBCamera();
camera.init(this);
camera.setCameraType(CameraType.C3D_SBS);

2. start preview

    if(!camera.isCameraOpened()){
        boolean ret = camera.open(0);
        if(!ret){
            Toast.makeText(USBCameraActivity.this, "NO_USB_DEVICE", Toast.LENGTH_SHORT).show();
        }else {
            camera.setPreviewSize(PREVIEW_WIDTH,PREVIEW_HEIGHT);
            camera.setPreviewTexture(mCameraView.getSurfaceTexture());
            camera.startPreview();
        }
    }

3. captureStill

    if(camera.isCameraOpened()){
        Toast.makeText(USBCameraActivity.this, "Captured", Toast.LENGTH_SHORT).show();
        camera.captureStill();
    }

4. recording

    if(camera.isCameraOpened() && !camera.isRecording()){
        Toast.makeText(USBCameraActivity.this, "startRecording", Toast.LENGTH_SHORT).show();
        camera.startRecording();
    }
    if(camera.isCameraOpened() && camera.isRecording()){
        Toast.makeText(USBCameraActivity.this, "stopRecording", Toast.LENGTH_SHORT).show();

        camera.stopRecording();
    }

5. stop

    if(camera.isCameraOpened()){
       camera.close();
    }

6. destory

camera.destroy();

Refer

http://bigflake.com/mediacodec/

注意:

PREVIEW_WIDTH、PREVIEW_HEIGHT的大小和外接摄像头,手机硬件编码器有关。
不合适的值,可能会发生错误。
常见值:
	标清:480P   640*480
	高清:720P	1280*720
	超清:1080P	1920*1080
如果是双摄:
	标清:480P   1280*480
	高清:720P	2560*720
	超清:1080P	3840*1080
	并调用,camera.setCameraType(CameraType.C3D_SBS)

Todo

1.同时录制视频和声音。
    需要常见的宽高比例,如果是双摄像头,目前简易做法,camera.setCameraType(CameraType.C3D_SBS),将全宽图片压缩为半宽。
2.编写Camera应用,测试插件。
3.优化压缩方式。
4.支持多种预览方式。
5.支持两种拍摄和录制方式
    原始数据。
    预览画面显示的数据。