【问题标题】:Opening the front facing camera打开前置摄像头
【发布时间】:2018-07-11 14:56:45
【问题描述】:

我遇到了无法让用户默认打开前置摄像头的问题。

我想知道是否有任何半直接的方法可以做到这一点,无论是使用 Camera2 API、Intent 还是第三方 API。

我不想将照片存储在用户手机上,因为我将其传输到位图,然后再传输到 64 位字符串以远程存储。

谁能给点建议?

【问题讨论】:

  • cameraConfig.setCameraId(1) for Camera 和 Camera2 API by Intent for intent 它应该类似于 intent.putExtra("android.intent.extras.CAMERA_FACING", 1) 但通过意图用户可以简单把相机转过来
  • @MarcosVasconcelos 我已经尝试使用 put extra,但似乎没有任何区别,摄像头仍然会从后置摄像头开始。
  • 意图 cameraIntent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra("android.intent.extras.CAMERA_FACING", 1); startActivityForResult(cameraIntent, CAMERA_REQUEST);
  • 要使用Camera2 API,您需要将预览附加到SurfaceView,它还有很多工作,不知道如何通过使用前置摄像头的意图成功地告诉(任何)摄像头应用程序(因为它可以被第三个相机应用忽略)

标签: java android android-camera android-camera-intent android-camera2


【解决方案1】:

您可以使用 ACTION_IMAGE_CAPTURE Intent 通过 startActivityForResult() 使用默认相机应用。

或者你可以使用这个库https://github.com/CameraKit/camerakit-android

或者这个https://github.com/RedApparat/Fotoapparat

当然,原始相机 API(第 1 版)也是一种选择。

【讨论】:

    【解决方案2】:

    试试这个:

    mCamera = Camera.open(1); // for front camera
    
    mCamera = Camera.open(0); // for Rear camera
    

    别忘了在清单中添加这些权限:

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-feature android:name="android.hardware.camera.front"    android:required="false" />
    

    【讨论】:

    • 我已经尝试过了,但它告诉我相机 API 是多余的。当我运行应用程序时,什么也没有发生。
    • 或者你可以试试这个: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uri photoUri = Uri.fromFile(getOutputPhotoFile()); intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri); intent.putExtra("android.intent.extras.CAMERA_FACING", 1); startActivityForResult(intent, CAMERA_PHOTO_REQUEST_CODE);
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多