当前位置: 首页 > news >正文

有没有做网站的博士专业网站推广系统

有没有做网站的博士专业,网站推广系统,网站设计建设价格,外贸网站建设的意义在Android设备中#xff0c;做预览拍照的需求的时候#xff0c;我们会指定 CameraSelector DEFAULT_FRONT_CAMERA前置 或者后置CameraSelector DEFAULT_BACK_CAMERA 如果你使用的是平板或者工业平板#xff0c;那么就会遇到多摄像头以及外置摄像头问题#xff0c;简单的指… 在Android设备中做预览拍照的需求的时候我们会指定 CameraSelector DEFAULT_FRONT_CAMERA前置 或者后置CameraSelector DEFAULT_BACK_CAMERA 如果你使用的是平板或者工业平板那么就会遇到多摄像头以及外置摄像头问题简单的指定前后置是不行的哪怕是USB 外置也有挂载两个的情况 本文就是写于两个外置的特殊情况作为验证所以我们必须能获取所有可用的摄像头我们以最新的预览拍照控件为例 单摄像头推荐PreviewViewCameraSelector 与挂载的位置相关 且绑定了activity lifecycle 多摄像头推荐SurfaceviewCameraId 与id相关 surfaceview方式获取id在下面 PreviewView 为例初始化的时候需要使用 CameraSelector去绑定拍照的UseCase MainThreadNonNullpublic Camera bindToLifecycle(NonNull LifecycleOwner lifecycleOwner,NonNull CameraSelector cameraSelector,NonNull UseCase... useCases) {if (getCameraOperatingMode() CAMERA_OPERATING_MODE_CONCURRENT) {throw new UnsupportedOperationException(bindToLifecycle for single camera is not supported in concurrent camera mode, call unbindAll() first);}setCameraOperatingMode(CAMERA_OPERATING_MODE_SINGLE);Camera camera bindToLifecycle(lifecycleOwner, cameraSelector, null, emptyList(),useCases);return camera;} 因为我们需要获取所有可用的摄像头类似旧版的CameraId 将下面代码放入activity获取 val cameraProviderFuture ProcessCameraProvider.getInstance(this)cameraProviderFuture.addListener({LogUtils.log(摄像头结果返回)val cameraProvider cameraProviderFuture.get()var textC val cameraInfos cameraProvider.availableCameraInfosvar isSupportBack falsevar isSupportFront falsevar isExternal falsevar isUnknow falsefor (cameraInfo in cameraInfos) {when (cameraInfo.lensFacing) {CameraSelector.LENS_FACING_FRONT - {isSupportFront truetextC \n前置 lensFacing:[${cameraInfo.lensFacing},${cameraInfo.cameraSelector}]}CameraSelector.LENS_FACING_BACK - {isSupportBack truetextC \n后置 lensFacing:[${cameraInfo.lensFacing},${cameraInfo.cameraSelector}]}CameraSelector.LENS_FACING_EXTERNAL - {isExternal truetextC \n外置 lensFacing:[${cameraInfo.lensFacing},${cameraInfo.cameraSelector}]}CameraSelector.LENS_FACING_UNKNOWN - {isUnknow truetextC \n未知 lensFacing:[${cameraInfo.lensFacing},${cameraInfo.cameraSelector}]}}}LogUtils.logI(init,设备支持情况后置:${isSupportBack},前置:${isSupportFront},外置:${isExternal},未知:${isUnknow})binding.tvCheckResult.text len:$textC\n 设备支持情况后置:${isSupportBack},前置:${isSupportFront},外置:${isExternal},未知:${isUnknow}}, ContextCompat.getMainExecutor(this)) 工业平板做的产品摄像头一般固定获取之后指定即可也可以自己编辑优先级逻辑下面是插两个摄像头的例子 可以使用上述打印的具体摄像头推荐 也可以自己bulid自己build有局限性比如两个外置你使用2去build就不行了 val selector: CameraSelector if (isSupportBack) {CameraSelector.DEFAULT_BACK_CAMERA} else if (isSupportFront) {CameraSelector.DEFAULT_FRONT_CAMERA} else if (isExternal) {CameraSelector.Builder().requireLensFacing(2).build()} else if (isUnknow) {CameraSelector.Builder().requireLensFacing(1).build()} else {CameraSelector.DEFAULT_BACK_CAMERA} // 如果你使用的是surfaceviewcameraId 而且是多预览  val cameraManager activity.getSystemService(AppCompatActivity.CAMERA_SERVICE) as CameraManagerval cameraIds cameraManager.cameraIdListfor (cameraId in cameraIds) {val characteristics cameraManager.getCameraCharacteristics(cameraId)val facing characteristics.get(CameraCharacteristics.LENS_FACING)} 明确了cameraId 其他通过预览的示例代码 我也传一下吧由于每个摄像头是独立 有多少个预览就new多少个出来  class CameraUtils {val TAG CameraUtilsprivate var mCameraDevice: CameraDevice? nullprivate var mCaptureSession: CameraCaptureSession? nullprivate var mPreviewBuilder: CaptureRequest.Builder? nullfun bindSurfaceView(activity: Activity,surfaceView: SurfaceView,len: Int,cId: String?): String {val cameraManager activity.getSystemService(AppCompatActivity.CAMERA_SERVICE) as CameraManagersurfaceView.holder.setFixedSize(9999, 9999)LogUtils.logI(TAG, bindSurfaceView)val cameraId cId ?: getCameraId(cameraManager, len)try {LogUtils.log(len:$len cameraId:$cameraId)if (TextUtils.isEmpty(cameraId)) {LogUtils.logE(TAG, cameraId null)return cameraId null}if (ActivityCompat.checkSelfPermission(activity,Manifest.permission.CAMERA) ! PackageManager.PERMISSION_GRANTED) {LogUtils.logE(TAG, 没有权限)return 没有权限}cameraManager.openCamera(cameraId!!, object : CameraDevice.StateCallback() {override fun onOpened(camera: CameraDevice) {LogUtils.logE(TAG, onOpened cameraId:$cameraId)mCameraDevice cameracreateCaptureSession(camera, surfaceView)}override fun onDisconnected(camera: CameraDevice) {LogUtils.logE(TAG, onDisconnected cameraId:$cameraId)}override fun onError(camera: CameraDevice, error: Int) {LogUtils.logE(TAG, onError:$error cameraId:$cameraId)}}, null)} catch (e: CameraAccessException) {e.printStackTrace()LogUtils.logE(TAG, onError:$e)return onError:$e}return cameraId:$cameraId}/*** 创建CaptureSession*/private fun createCaptureSession(camera: CameraDevice, surfaceView: SurfaceView) {try {surfaceView.run {val surfaceHolder: SurfaceHolder getHolder()surfaceHolder.setFixedSize(getWidth(), getHeight())val surfaces: MutableListSurface ArrayList()surfaces.add(surfaceHolder.surface)mPreviewBuilder camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)mPreviewBuilder?.addTarget(surfaceHolder.surface)camera.createCaptureSession(surfaces,object : CameraCaptureSession.StateCallback() {override fun onConfigured(session: CameraCaptureSession) {mCaptureSession sessionupdatePreview()}override fun onConfigureFailed(session: CameraCaptureSession) {// 配置会话失败}},null)}} catch (e: CameraAccessException) {e.printStackTrace()}}private fun updatePreview() {if (mCameraDevice null) {LogUtils.logE(TAG, mCameraDevice null)return}if (mCaptureSession null) {LogUtils.logE(TAG, mCaptureSession null)return}if (mPreviewBuilder null) {LogUtils.logE(TAG, mPreviewBuilder null)return}LogUtils.logI(TAG, updatePreview.)try {mCaptureSession?.setRepeatingRequest(mPreviewBuilder!!.build(), null, null)} catch (e: Exception) {e.printStackTrace()LogUtils.logE(TAG, updatePreview: $e)}}Throws(CameraAccessException::class)private fun getCameraId(cameraManager: CameraManager, len: Int): String? {val cameraIds cameraManager.cameraIdListfor (cameraId in cameraIds) {val characteristics cameraManager.getCameraCharacteristics(cameraId)val facing characteristics.get(CameraCharacteristics.LENS_FACING)// CameraCharacteristics.LENS_FACING_BACK CameraCharacteristics.LENS_FACING_FRONTif (facing ! null facing len) {return cameraId}}return null}} 比如用RecyclerView 多个item预览  可以这样初始化 fun getOneUtils(index: Int): CameraUtils {var cache mCameraUnitsMap[index]if (cache null) {cache CameraUtils()mCameraUnitsMap[index] cache}return cache} 使用 val text getOneUtils(position).bindSurfaceView(thisCameraInfoActivity,holder.getView(R.id.surfaceView),len, cameraId) 如果是uniapp同学需要买相关插件的可以留言联系
http://www.zqtcl.cn/news/341370/

相关文章:

  • 郑州冬青街 网站建设网站seo技巧
  • 网站定制公司推荐外包公司怎么样
  • 深圳做网站要网站制作能在家做吗
  • 设计国外网站深圳外贸网站推广
  • wordpress首页文章分类展示站长工具seo综合查询引流
  • 整网站代码 带数据 免费 下载株洲网站的建设
  • 邢台学校网站建设价格个人博客首页
  • php做网站优势wordpress导航图片尺寸
  • 西安商城网站建设咪豆com域名表示的是什么机构
  • 网站如何申请微信支付接口织梦中英文网站源码
  • 礼县住房和城乡建设局网站化妆品的网站设计方案
  • 做外汇网站代理公关团队
  • wordpress登录页面创建seo网站平台
  • 兰州seo整站优化服务商企业网站seo优化方案
  • 高校网站建设管理制度Wordpress动图主题
  • 手机ui设计网站自己做传奇网站
  • 长春网站建设吉网传媒实力牜网站pv是什么意思
  • 西安网站建设培训班无锡seo报价
  • 网站设计的技能高端品牌网站建设公司哪家好
  • 专门做二手书网站或app陕西交通建设集团官方网站
  • 微信商城怎么开徐州网站推广优化
  • 服装店网站建设规划书山西网站的公司
  • 龙岩做网站改版一般多久wordpress后台登入
  • 网站建设税收编码怎么联系企业的网站建设
  • 色块布局网站首页模板各种网站解决方案
  • 电商建站工具手机编辑网页的软件有哪些
  • 网站腾讯备案吗wordpress英文主题怎么用
  • 网站内容建设的建议wordpress主题enfold
  • 哪里做网站优化石家庄学校网站建设
  • 诸暨北京有哪些网站制作公司wordpress菜单外链