Как удалить данные GPS в изображении с помощью Camera2? - PullRequest
0 голосов
/ 23 марта 2020

В старых android API-интерфейсах камеры мы можем удалить данные GPS в изображении, используя этот метод. ( Camera.Parameters -> removeGpsData )

Кто-нибудь знает, как удалить или отключить Данные GPS в изображении с использованием новых Android Camera2 API? Наша цель - сделать снимок без информации GPS в exif-изображении.

Вот мой код:

private fun createCameraPreviewSession() {
    try {
        val texture = textureView.surfaceTexture

        // We configure the size of default buffer to be the size of camera preview we want.
        texture.setDefaultBufferSize(previewSize.width, previewSize.height)

        // This is the output Surface we need to start preview.
        val surface = Surface(texture)

        // We set up a CaptureRequest.Builder with the output Surface.
        previewRequestBuilder = cameraDevice!!.createCaptureRequest(
                CameraDevice.TEMPLATE_PREVIEW
        )
        previewRequestBuilder.addTarget(surface)

        // Here, we create a CameraCaptureSession for camera preview.
        cameraDevice?.createCaptureSession(Arrays.asList(surface, imageReader?.surface),
                object : CameraCaptureSession.StateCallback() {

                    override fun onConfigured(cameraCaptureSession: CameraCaptureSession) {
                        // The camera is already closed
                        if (cameraDevice == null) return

                        // When the session is ready, we start displaying the preview.
                        captureSession = cameraCaptureSession
                        try {
                            // Auto focus should be continuous for camera preview.
                            previewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,
                                    CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE)
                            // Flash is automatically enabled when necessary.
                            setAutoFlash(previewRequestBuilder)

                            // Finally, we start displaying the camera preview.
                            previewRequest = previewRequestBuilder.build()
                            captureSession?.setRepeatingRequest(previewRequest,
                                    captureCallback, backgroundHandler)
                        } catch (e: CameraAccessException) {
                            Log.e(TAG, e.toString())
                        }

                    }

                    override fun onConfigureFailed(session: CameraCaptureSession) {
                        activity.showToast("Failed")
                    }
                }, null)
    } catch (e: CameraAccessException) {
        Log.e(TAG, e.toString())
    }

}

1 Ответ

0 голосов
/ 24 марта 2020

После одного дня обучения, наконец, найти решение.

Просто установите значение этой клавиши JPEG_GPS_LOCATION на ноль.

private var captureRequestBuilder: CaptureRequest.Builder? = null

captureRequestBuilder?.apply {
   set(CaptureRequest.JPEG_GPS_LOCATION, null)
}
...