打开USB摄像头

一、确定USB摄像头的名称

String nodeNames[] = android_command("ls /sys/class/video4linux");
public static String[] android_command(String cmd) {
    String result = null;
    String con = "";
    Process p;
    try {
        p = Runtime.getRuntime().exec(cmd);
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
        while ((result = br.readLine()) != null) {
            if(!TextUtils.isEmpty(result)){
                result.trim();
                con += result + "`";
            }
        }
        if(!con.equals("")){
            con=con.substring(0,con.length()-1);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return con.split("`");
}

二、设置权限

upgradeRootPermission(cameraNodes);  // 设置权限
initCamrea(context,cameraNodes);


/**
 * USB摄像头的挂在路径设置为root权限
 * @param pdkCodePath
 */
private void upgradeRootPermission(String [] deviceNodes) {
    Process process = null;
    DataOutputStream os = null;
    String pdkCodePath = MyApp.getInstance().getPackageName();
    Log.d(TAG, "upgradeRootPermission , pdkCodePath = " + pdkCodePath);
    try {
        String cmd = "chmod 777" + pdkCodePath;
        process = Runtime.getRuntime().exec("su");
        os = new DataOutputStream(process.getOutputStream());
        os.writeBytes(cmd + "\n");

        for(String strNode : deviceNodes){
            String cmd1 = "chmod 777 /dev/"+ strNode;
            Log.d(TAG, "upgradeRootPermission , cmd1 = " + cmd1);
            os.writeBytes(cmd1 + "\n");
        }
        os.writeBytes("exit\n");
        os.flush();
        process.waitFor();

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (os != null) {
                os.close();
            }
            process.destroy();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

public void initCamera(){
    String startCamera0 = "-d /dev/" + deviceNode[0] + " -r 640*480 -f 25 -n";
    int nRetSucceed = USBCamCtrl.UVCInit(context, startCamera0);
    if (nRetSucceed == 0) {
        nRetSucceed = USBCamCtrl.UVCRun(deviceNode[0]);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值