社区
Android
帖子详情
android.hardware.Camera.getNumberOfCameras,Camera已经deprecated过时,用camera2哪个函数替代?
wcc7823hdfuer9
2016-03-22 07:28:28
由于android.hardware.Camera已经deprecated过时了,不推荐使用了。
那么getNumberOfCameras()应该用camera2里的哪个函数替代??
...全文
1102
2
打赏
收藏
android.hardware.Camera.getNumberOfCameras,Camera已经deprecated过时,用camera2哪个函数替代?
由于android.hardware.Camera已经deprecated过时了,不推荐使用了。 那么getNumberOfCameras()应该用camera2里的哪个函数替代??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
春华-秋实
2019-01-03
打赏
举报
回复
用getCameraIdList()试试看
甲壳丝
2019-01-03
打赏
举报
回复
CameraManager.getCameraIdList()
Android
调用前摄像头拍照存储,根据打开时横竖屏切换preview
android
调用
camera
时,可以自己写一个activity,赋上相关参数,打开前
camera
就可以了; 需要申请的permission,在
Android
Manifest.xml中添加: 主要功能,打开前
camera
private
Camera
openFrontFacing
Camera
Gingerbread() { int
camera
Count = 0;
Camera
cam = null;
Camera
.
Camera
Info
camera
Info = new
Camera
.
Camera
Info();
camera
Count =
Camera
.get
Number
Of
Camera
s(); for (int camIdx = 0; camIdx <
camera
Count; camIdx++) {
Camera
.get
Camera
Info(camIdx,
camera
Info); if (
camera
Info.facing ==
Camera
.
Camera
Info.
CAMERA
_FACING_FRONT) { try { cam =
Camera
.open(camIdx); mCurrentCamIndex = camIdx; } catch (RuntimeException e) { Log.e(TAG, "
Camera
failed to open: " + e.getLocalizedMessage()); } } } return cam; } 根据打开时的横竖屏方向来调整preview角度 //根据横竖屏自动调节preview方向,Starting from API level 14, this method can be called when preview is active. private static void set
Camera
DisplayOrientation(Activity activity,int
camera
Id,
Camera
camera
) {
Camera
.
Camera
Info info = new
Camera
.
Camera
Info();
Camera
.get
Camera
Info(
camera
Id, info); int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); //degrees the angle that the picture will be rotated clockwise. Valid values are 0, 90, 180, and 270. //The starting position is 0 (landscape). int degrees = 0; switch (rotation) { case Surface.ROTATION_0: degrees = 0; break; case Surface.ROTATION_90: degrees = 90; break; case Surface.ROTATION_180: degrees = 180; break; case Surface.ROTATION_270: degrees = 270; break; } int result; if (info.facing ==
Camera
.
Camera
Info.
CAMERA
_FACING_FRONT) { result = (info.orientation + degrees) % 360; result = (360 - result) % 360; // compensate the mirror } else { // back-facing result = (info.orientation - degrees + 360) % 360; }
camera
.setDisplayOrientation(result); }
UVC
Camera
.rar
业余时间捣鼓了下
Android
板子连接多个usb摄像头的方案,一开始使用系统的
Camera
V1的api,但是取到的摄像头数量一直不对(api:
Camera
.get
Number
Of
Camera
s()),然后又去网上查了方案(传送门:https://blog.csdn.net/xiangzhihong8/article/details/82877901)发现
Android
P之后原生就支持多摄像头,心里美滋滋,这么快就大结局了,但是果然天不遂人愿,于是改用
Camera
V2的api,但还是识别不到完整的摄像头列表。没查到具体原因,但是猜测是跟
Android
板子有关,虽然在软件上
已经
支持多摄像头,但是底层可能还是限制了最大连接数量。之后去应用市场下了一个usb摄像头app,发现居然是可以正常识别出所有的摄像头,遂反编译之,发现是使用了UVC
Camera
。这个开源库貌似
已经
很久没有维护,并且根据之前使用的经验来看也有不少bug(主要是兼容性方面),但是项目中用到的硬件只有一个型号,并不需要做太多设备兼容性的适配,因此还是可以拿来一用。下面就分享一下UVC
Camera
的接入过程。 。
自定义相机
/** * 此处是切换摄像镜头的按键单击事件 */ select
camera
=(Button)findViewById(R.id.main_
camera
);//获取到切换摄像头的按钮 btnOnclick(select
camera
); select
camera
.setOnClickListener(new OnClickListener() { @SuppressLint("NewApi") @Override public void onClick(View arg0) { System.out.println("正在进入切换摄像头模块"); //切换前后摄像头 int
camera
Count = 0;
Camera
.
Camera
Info
camera
Info = new
Camera
.
Camera
Info();
camera
Count =
Camera
.get
Number
Of
Camera
s();//得到摄像头的个数 System.out.println("现在摄像头的编号是:"+
camera
Position); for(int i = 0; i <
camera
Count; i++ ) {
Camera
.get
Camera
Info(i,
camera
Info);//得到每一个摄像头的信息 if(
camera
Position == 1) { //现在是后置,变更为前置 // if(
camera
Info.facing ==
Camera
.
Camera
Info.
CAMERA
_FACING_FRONT) {//代表摄像头的方位,
CAMERA
_FACING_FRONT前置
CAMERA
_FACING_BACK后置 System.out.println("我们现在正在切换到后置摄像头内部");
camera
Position = 0;
camera
.stopPreview();//停掉原来摄像头的预览
camera
.release();//释放资源
camera
= null;//取消原来摄像头
camera
=
Camera
.open(
camera
Position);//打开当前选中的摄像头 surfaceView.getHolder().addCallback(new SurfaceCallback());//为SurfaceView的句柄添加一个回调
函数
try {
camera
.setPreviewDisplay(holder);//通过surfaceview显示取景画面 } catch (IOException e) { e.printStackTrace(); }
camera
.startPreview();//开始预览 break; // } } else { //现在是前置, 变更为后置 if(
camera
Info.facing ==
Camera
.
Camera
Info.
CAMERA
_FACING_BACK) {//代表摄像头的方位,
CAMERA
_FACING_FRONT前置
CAMERA
_FACING_BACK后置
camera
Position = 1; System.out.println("我们现在正在切换到前置摄像头");
camera
.stopPreview();//停掉原来摄像头的预览
camera
.release();//释放资源
camera
= null;//取消原来摄像头
camera
=
Camera
.open(
camera
Position);//打开当前选中的摄像头 surfaceView.getHolder().addCallback(new SurfaceCallback());//为SurfaceView的句柄添加一个回调
函数
try {
camera
.setPreviewDisplay(holder);//通过surfaceview显示取景画面 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
camera
.startPreview();//开始预览 break; } } } /** * 闪光灯状态的改变,默认是自动闪光的,可分为强制打开和强制关闭,
已经
恢复自动闪光等 */ flash=(Button)findViewById(R.id.main_flash); flash.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { System.out.println("闪光灯现在的状态="+state); //当前是自动闪光,改变成强制
Camera
.Parameters parameters =
camera
.getParameters(); if(state==0){ //关闭闪光灯 parameters.setFlashMode(Parameters.FLASH_MODE_OFF); flash.setBackgroundResource(R.drawable.flashclose); state=1; } //当前是强制关闭,改变成强制打开 else if(state==1){ //打开闪光灯 parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); flash.setBackgroundResource(R.drawable.flashop); state=2; } //当前是强制打开,改变成自动闪光 else if(state==2){ //闪光灯自动 parameters.setFlashMode(Parameters.FLASH_MODE_ON); flash.setBackgroundResource(R.drawable.flashauto);
camera
.setParameters(parameters); state=0; }
camera
.setParameters(parameters); } });
获取摄像头信息
如何获取
Android
设备上的详细的摄像头信息呢? 目前Samsung的Galaxy Tab和Nexus S均有前置摄像头,获取
Android
摄像头的详细信息,在
Android
2.3 SDK中得到了增强: 在
android
.
hardware
.
Camera
类中,API Level 9的SDK中加入了两个比较重要的方法,使用get
Number
Of
Camera
s这个static类型方法可以获取当前
Android
设备上的摄像头数量,比如Nexus S有两个,方法原型如下
android
-
android
.
hardware
.
Camera
Camera
public class
Camera
extends Object java.lang.Object ↳
android
.
hardware
.
Camera
This class was
deprecated
in API level 21. We recommend using the new
Android
80,361
社区成员
91,291
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章