当前位置:首页 » 安卓系统 » 安卓uvc如何设置

安卓uvc如何设置

发布时间: 2022-10-22 09:11:02

A. 带otg功能的手机能外接一个摄像头吗如果能,如何如何操作启动这个摄像头

安卓4.0以上手机,都能支持。但有些手机,没有内置5V升压模块,无法为外接设备供电,需要买一个带供电的OTG转接头(某宝有售,4块钱),如果OTG功能已被厂商屏蔽,需要ROOT,修改手机接口参数(请自行网络)。
下载usbwebcamera 软件,亲测可用。
需要设置一下的,界面是英文的,刚接上没画面,在设置里改成YUV模式,立马就有图像了。

B. Android手机通过otg线外接usb摄像头需要怎么做

若手机支持OTG功能,可以通过OTG连接线实现手机与U盘、鼠标、键盘连接等操作来进行数据交换。

用法:

通过OTG转接线将U盘和您的手机相连接,就可以使用了。

C. android app 如何与uvc摄像头通讯

来看看是怎么操作UVC摄像头的吧.我们实现了一个专门检测UVC摄像头的服务:UVCCameraService类,主要代码如下:
监听
mUSBMonitor = new USBMonitor(this, new USBMonitor.OnDeviceConnectListener() { @Override
public void onAttach(final UsbDevice device) {
Log.v(TAG, "onAttach:" + device);
mUSBMonitor.requestPermission(device);
} @Override
public void onConnect(final UsbDevice device, final USBMonitor.UsbControlBlock ctrlBlock, final boolean createNew) {
releaseCamera(); if (BuildConfig.DEBUG) Log.v(TAG, "onConnect:"); try { final UVCCamera camera = new MyUVCCamera();
camera.open(ctrlBlock);
camera.setStatusCallback(new IStatusCallback() { // ... uvc 摄像头链接成功

Toast.makeText(UVCCameraService.this, "UVCCamera connected!", Toast.LENGTH_SHORT).show(); if (device != null)
cameras.append(device.getDeviceId(), camera);
}catch (Exception ex){
ex.printStackTrace();
}
} @Override
public void onDisconnect(final UsbDevice device, final USBMonitor.UsbControlBlock ctrlBlock) { // ... uvc 摄像头断开链接
if (device != null) {
UVCCamera camera = cameras.get(device.getDeviceId()); if (mUVCCamera == camera) {
mUVCCamera = null;
Toast.makeText(UVCCameraService.this, "UVCCamera disconnected!", Toast.LENGTH_SHORT).show();
liveData.postValue(null);
}
cameras.remove(device.getDeviceId());
}else {
Toast.makeText(UVCCameraService.this, "UVCCamera disconnected!", Toast.LENGTH_SHORT).show();
mUVCCamera = null;
liveData.postValue(null);
}
} @Override
public void onCancel(UsbDevice usbDevice) {
releaseCamera();
} @Override
public void onDettach(final UsbDevice device) {
Log.v(TAG, "onDettach:");
releaseCamera();// AppContext.getInstance().bus.post(new UVCCameraDisconnect());
}
});

这个类主要实现UVC摄像头的监听\链接\销毁\反监听.当有UVC摄像头链接成功后,会创建一个mUVCCamera对象.
然后在MediaStream里, 我们改造了switchCamera,当参数传2时,表示要切换到UVCCamera(0,1分别表示切换到后置\前置摄像头).
创建
在创建摄像头时,如果是要创建uvc摄像头,那直接从服务里面获取之前创建的mUVCCamera实例:
if (mCameraId == 2) {
UVCCamera value = UVCCameraService.liveData.getValue(); if (value != null) { // uvc camera.
uvcCamera = value;
value.setPreviewSize(width, height,1, 30, UVCCamera.PIXEL_FORMAT_YUV420SP,1.0f); return; // value.startPreview();
}else{
Log.i(TAG, "NO UVCCamera");
uvcError = new Exception("no uvccamera connected!"); return;
} // mCameraId = 0;
}123456789101112131415

预览
在预览时,如果uvc摄像头已经创建了,那执行uvc摄像头的预览操作:
UVCCamera value = uvcCamera;if (value != null) {
SurfaceTexture holder = mSurfaceHolderRef.get(); if (holder != null) {
value.setPreviewTexture(holder);
} try {
value.setFrameCallback(uvcFrameCallback, UVCCamera.PIXEL_FORMAT_YUV420SP/*UVCCamera.PIXEL_FORMAT_NV21*/);
value.startPreview();
cameraPreviewResolution.postValue(new int[]{width, height});
}catch (Throwable e){
uvcError = e;
}
}1234567891011121314

这里我们选的colorFormat为PIXEL_FORMAT_YUV420SP 相当于标准摄像头的NV21格式.
关闭预览
同理,关闭时,调用的是uvc摄像头的关闭.
UVCCamera value = uvcCamera; if (value != null) {
value.stopPreview();
}1234

销毁
因为我们这里并没有实质性的创建,所以销毁时也仅将实例置为null就可以了.
UVCCamera value = uvcCamera;if (value != null) { // value.destroy();
uvcCamera = null;
}12345

有了这些操作,我们看看上层怎么调用,
首先需要在Manifest里面增加若干代码,具体详见UVCCamera工程说明.如下:
<activity android:name=".UVCActivity" android:launchMode="singleInstance">

<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>

<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />

</activity>

然后,的代码在UVCActivity里,这个类可以在library分支的myapplication工程里找到.即这里.
启动或者停止UVC摄像头推送:
public void onPush(View view) { // 异步获取到MediaStream对象.
getMediaStream().subscribe(new Consumer<MediaStream>() { @Override
public void accept(final MediaStream mediaStream) throws Exception { // 判断当前的推送状态.
MediaStream.PushingState state = mediaStream.getPushingState(); if (state != null && state.state > 0) { // 当前正在推送,那终止推送和预览
mediaStream.stopStream();
mediaStream.closeCameraPreview();
}else{ // switch 0表示后置,1表示前置,2表示UVC摄像头
// 异步开启UVC摄像头
RxHelper.single(mediaStream.switchCamera(2), null).subscribe(new Consumer<Object>() { @Override
public void accept(Object o) throws Exception { // 开启成功,进行推送.
// ...
mediaStream.startStream("cloud.easydarwin.org", "554", id);
}
}, new Consumer<Throwable>() { @Override
public void accept(final Throwable t) throws Exception { // ooop...开启失败,提示下...
t.printStackTrace();
runOnUiThread(new Runnable() { @Override
public void run() {
Toast.makeText(UVCActivity.this, "UVC摄像头启动失败.." + t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
});
}
}
});
}

这样,整个推送就完成了.如果一切顺利,应当能在VLC播放出来UVC摄像头的视频了~~
我们再看看如何录像.也非常简单…
public void onRecord(View view) { // 开始或结束录像.
final TextView txt = (TextView) view;
getMediaStream().subscribe(new Consumer<MediaStream>() { @Override
public void accept(MediaStream mediaStream) throws Exception { if (mediaStream.isRecording()){ // 如果正在录像,那停止.
mediaStream.stopRecord();
txt.setText("录像");
}else { // 没在录像,开始录像...
// 表示最大录像时长为30秒,30秒后如果没有停止,会生成一个新文件.依次类推...
// 文件格式为test_uvc_0.mp4,test_uvc_1.mp4,test_uvc_2.mp4,test_uvc_3.mp4
String path = getExternalFilesDir(Environment.DIRECTORY_MOVIES) + "/test_uvc.mp4";
mediaStream.startRecord(path, 30000); final TextView pushingStateText = findViewById(R.id.pushing_state);
pushingStateText.append("\n录像地址:" + path);
txt.setText("停止");
}
}
});
}21

UVC摄像头还支持后台推送,即不预览的情况下进行推送,同时再切换到前台继续预览.只需要调用一个接口即可实现,如下:
@Overridepublic void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i, int i1) {
ms.setSurfaceTexture(surfaceTexture); // 设置预览的surfaceTexture}@Overridepublic boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
ms.setSurfaceTexture(null); // 设置预览窗口为null,表示关闭预览功能
return true;
}123456789

如果要彻底退出uvc摄像头的预览\推送,那只需要同时退出服务即可.
public void onQuit(View view) { // 退出
finish(); // 终止服务...
Intent intent = new Intent(this, MediaStream.class);
stopService(intent);
}1234567

## 获取更多信息 ##

D. 安卓系统上的app识别不了camera的uvc

成像的时候没转化正确,看看log。
无论使用哪种Camera的api,Camera的封装都可以大致分为两个流程:数据采集、渲染。于是我们就可以定义出这两块功能的接口:数据采集
publicinterfaceICamera{ListgetCameras();interfaceOnPhotoTake{voidonPhotoTake(Bitmapreader,Stringpath);}booleanopen(Stringid);voidclose();voidtakePicture(OnPhotoTakeonPhotoTake,Stringid);}
虽然是多个摄像头,但是我们可以用一个单例类来统一管理——UVCCameraHelper。在这个类中我们要做的事有:连接上usb摄像头设备,开启摄像头采集数据并将数据渲染到surface上,此外还需要提供拍照、视频录制等api。那么这里就需要用到UVCCcamera这个开源库了。我们需要在UVCCameraHelper定义一个USBMonitor对象,这个类的核心接口提供了USB设备的连接状态维护。

E. 安卓系统手机怎么装uvc

具体可以参考如下操作:

1、首先下载个安卓USB检测程序,插入UVC摄像头,在程序中检测看是在/dev/video中新增了节点,还是在/bus/usb下新增了节点,如果没新增video节点,则没有UVC驱动;

2、如果没有新增节点,有3个办法:一是自己写一个video固件,通常平板上都有前后两个摄像头,video0和video1都已经被占用,是无法通过这两个来调用外置摄像头的;二是干掉一个前置或者后置摄像头,这样就可以让外置USB用video0或video1来启动,这就是为什么在没有摄像头的安卓上能成功;三是找到系统的源码,配置其中的UVC驱动,编译后再安装;

3、如果新增了节点那就好办了,如果板子上已经有2个摄像头,自己写个程序调用ID为3的camera就好了;如果没有2个摄像头,那直接用系统自带的相机程序前后切换就可以看到USB的信息了。如果是AV通过采集卡转换的UVC,还能在相机应用里看;

F. 手机uvc功能怎么打开

手机uvc功能打开:首先下载个安卓USB检测程序,插入UVC摄像头,在程序中检测看是在/dev/video中新增了节点,还是在/bus/usb下新增了节点,如果没新增video节点,则没有UVC驱动。

相关的灯有强紫外线高压水银灯、高强金属卤素灯、晒版灯、毛细管超高压水银灯、光清洗灯、光盘专用灯、紫外线铁灯、杀菌消毒灯、短弧氙气灯、准分子放电灯。

UVC工业相机:

这些设备(如IDS生产的USB UVC相机)的优点是它们在运行时不需要安装特殊的驱动程序,因为标准的UVC驱动程序能让不同制造商生产的产品之间可相互兼容。因此,用户只需将相机连接到电脑上,便可直接进行图像传输。

支持 USB Video Class (UVC) standard 1.1可以让相机在所有的作业系统以及平台中使用(Windows, Linux, Mac etc.)。用户只需连接相机便可进行图像传输,而无需安装任何驱动程序。

UVC相机最适合作为工业网络相机在视频会议、站亭系统、小型设备生产、物流业等应用中使用。

G. 安卓UⅤC什么意思

UVC,全称为:USB video class 或USB video device class

UVC是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。

如今的主流操作系统(如Windows XPSP2and later, Linux 2.4.6 and later, MacOS 10.5 and later)都已提供UVC设备驱动,因此符合UVC规格的硬件设备在不需要安装任何的驱动程序下即可在主机中正常使用。使用UVC技术的包括摄像头、数码相机、类比影像转换器、电视棒及静态影像相机等设备。

最新的UVC版本为UVC 1.1,由USB Implementers Forum定义包括基本协议及负载格式。

网络摄像头是第一个支持UVC而且也是数量最多的UVC设备,目前,操作系统只要是 Windows XP SP2 之后的版本都可以支持 UVC,当然 Vista 就更不用说了。Linux系统自2.4以后的内核都支持了大量的设备驱动,并可以支持UVC设备。

使用 UVC 的好处 USB 在 Video这块也成为一项标准了之后,硬件在各个程序之间彼此运行会更加顺利,而且也省略了驱动程序安装这一环节。

紫外线的分类
根据生物效应的不同,将紫外线按照波长划分为四个波段:

UVA:

波段,波长320~400nm,又称为长波黑斑效应紫外线 。它有很强的穿透力,可以穿透大部分透明的玻璃以及塑料。日光中含有的长波紫外线 有超过98%能穿透臭氧层和云层到达地球表面,UVA可以直达 肌肤的真皮层,破坏弹性纤维和胶原蛋白纤维,将我们的皮肤晒黑。360nm波长的UVA紫外线符合昆虫类的趋光性反应曲线,可制作诱虫灯。300-420nm波长的UVA紫外线可透过完全截止可见光的特殊着色玻璃灯管,仅辐射出以365nm为中心的近紫外光,可用于矿石鉴定、舞台装饰、验钞等场所。

UVB:

波段,波长275~320nm,又称为中波红斑效应紫外线 。中等穿透力,它的波长较短的部分会被透明玻璃吸收,日光中含有的中波紫外线大部分被臭氧层所吸收,只有不足2%能到达地球表面,在夏天和午后会特别强烈。UVB紫外线对人体具有红斑作用,能促进体内矿物质代谢和维生素D的形成,但长期或过量照射会令皮肤晒黑,并引起红肿脱皮。紫外线保健灯、植物生长灯发出的就是使用特殊透紫玻璃(不透过254nm以下的光)和峰值在300nm附近的荧光粉制成。

UVC:

紫外线的UVC波段,波长200~275nm,又称为短波灭菌紫外线。它的穿透能力是最弱的,无法穿透大部分的透明玻璃及塑料。日光中含有的短波紫外线几乎被臭氧层完全吸收。短波紫外线对人体的伤害很大,短时间照射即可灼伤皮肤,长期或高强度照射还会造成皮肤癌。紫外线杀菌灯发出的就是UVC短波紫外线。

UVD:

波段,波长100~200nm,又称为真空紫外线。

H. android设备插上uvc摄像头后,怎么确定设备的节点

<6>[ 812.640000] usb 1-2.3.4: new high-speed USB device number 8 using s5p-ehci

<6>[ 812.820000] usb 1-2.3.4: New USB device found, idVendor=1908, idProct=23
10
<6>[ 812.820000] usb 1-2.3.4: New USB device strings: Mfr=1, Proct=2, SerialN
umber=3
<6>[ 812.820000] usb 1-2.3.4: Proct: USB2.0 PC CAMERA
<6>[ 812.820000] usb 1-2.3.4: Manufacturer: Generic
<6>[ 812.820000] usb 1-2.3.4: SerialNumber: 20100331010203
<6>[ 812.835000] uvcvideo: Found UVC 1.00 device USB2.0 PC CAMERA (1908:2310)
<6>[ 812.840000] input: USB2.0 PC CAMERA as /devices/platform/s5p-ehci/usb1/1-2
/1-2.3/1-2.3.4/1-2.3.4:1.0/input/input6

热点内容
电话如何配置ip 发布:2025-01-31 07:48:48 浏览:299
2021奔驰e300l哪个配置性价比高 发布:2025-01-31 07:47:14 浏览:655
sqlserver2008光盘 发布:2025-01-31 07:32:13 浏览:577
sql查询小时 发布:2025-01-31 07:23:00 浏览:422
新车鉴别时怎么查看汽车配置 发布:2025-01-31 07:19:37 浏览:880
linux驱动程序开发 发布:2025-01-31 06:56:03 浏览:770
nlms算法 发布:2025-01-31 06:55:56 浏览:899
结束服务器怎么操作 发布:2025-01-31 06:54:17 浏览:393
android开源github 发布:2025-01-31 06:39:48 浏览:760
脚本里取余 发布:2025-01-31 06:39:46 浏览:804