android.hardware.Camera.getNumberOfCameras,Camera已经deprecated过时,用camera2哪个函数替代?

wcc7823hdfuer9 2016-03-22 07:28:28
由于android.hardware.Camera已经deprecated过时了,不推荐使用了。
那么getNumberOfCameras()应该用camera2里的哪个函数替代??
...全文
1102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
春华-秋实 2019-01-03
  • 打赏
  • 举报
回复
用getCameraIdList()试试看
甲壳丝 2019-01-03
  • 打赏
  • 举报
回复
CameraManager.getCameraIdList()
android调用camera时,可以自己写一个activity,赋上相关参数,打开前camera就可以了; 需要申请的permission,在AndroidManifest.xml中添加: 主要功能,打开前camera private Camera openFrontFacingCameraGingerbread() { int cameraCount = 0; Camera cam = null; Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); cameraCount = Camera.getNumberOfCameras(); for (int camIdx = 0; camIdx < cameraCount; camIdx++) { Camera.getCameraInfo(camIdx, cameraInfo); if (cameraInfo.facing == Camera.CameraInfo.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 setCameraDisplayOrientation(Activity activity,int cameraId, Camera camera) { Camera.CameraInfo info = new Camera.CameraInfo(); Camera.getCameraInfo(cameraId, 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.CameraInfo.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); }
/** * 此处是切换摄像镜头的按键单击事件 */ selectcamera=(Button)findViewById(R.id.main_camera);//获取到切换摄像头的按钮 btnOnclick(selectcamera); selectcamera.setOnClickListener(new OnClickListener() { @SuppressLint("NewApi") @Override public void onClick(View arg0) { System.out.println("正在进入切换摄像头模块"); //切换前后摄像头 int cameraCount = 0; Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); cameraCount = Camera.getNumberOfCameras();//得到摄像头的个数 System.out.println("现在摄像头的编号是:"+cameraPosition); for(int i = 0; i < cameraCount; i++ ) { Camera.getCameraInfo(i, cameraInfo);//得到每一个摄像头的信息 if(cameraPosition == 1) { //现在是后置,变更为前置 // if(cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {//代表摄像头的方位,CAMERA_FACING_FRONT前置 CAMERA_FACING_BACK后置 System.out.println("我们现在正在切换到后置摄像头内部"); cameraPosition = 0; camera.stopPreview();//停掉原来摄像头的预览 camera.release();//释放资源 camera = null;//取消原来摄像头 camera = Camera.open(cameraPosition);//打开当前选中的摄像头 surfaceView.getHolder().addCallback(new SurfaceCallback());//为SurfaceView的句柄添加一个回调函数 try { camera.setPreviewDisplay(holder);//通过surfaceview显示取景画面 } catch (IOException e) { e.printStackTrace(); } camera.startPreview();//开始预览 break; // } } else { //现在是前置, 变更为后置 if(cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {//代表摄像头的方位,CAMERA_FACING_FRONT前置 CAMERA_FACING_BACK后置 cameraPosition = 1; System.out.println("我们现在正在切换到前置摄像头"); camera.stopPreview();//停掉原来摄像头的预览 camera.release();//释放资源 camera = null;//取消原来摄像头 camera = Camera.open(cameraPosition);//打开当前选中的摄像头 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); } });

80,361

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧