Проблема с камерой в Pixel 3, основанная на Android Kotlin Project - PullRequest
0 голосов
/ 28 ноября 2018

Мое приложение использует функцию камеры и имеет логику потокового видео.Он показывает одновременно потоковую передачу с камеры и хорошо работает в Pixel 2 XL и Pixel 2. Но, к сожалению, он не работает с Pixel 3. Я думал, что это связано с версией Android SDK, но у Pixel 2 уже есть Android 9, и мы также протестировали приложениев Android 8 на нашем устройстве Motorola.

Мой вопрос заключается в том, что Google Pixel 3 является версия Android 9.0?Почти пиксель Google 2 является версией Android 8.0 SDK?

enter image description here

Как видите, пустая часть должна отображать потоковую передачу с камеры, но не работает.

Нельзя ли показывать оба экрана камеры на Google pixel 3?Я использовал MediaProjectionmanager для захвата экрана.

Вот части кода для записи видео и захвата экрана.

private fun setupComponents() {
    Hawk.init(this).build()
    initDagger()
    initViewModel()

    altSavingMode = Hawk.get(Constants.SettingsOptions().SWITCH_SAVING_MODE, false)

    mediaProjectionManager = getSystemService(Context.MEDIA_PROJECTION_SERVICE) as MediaProjectionManager

    val metrics = DisplayMetrics()
    windowManager.defaultDisplay.getMetrics(metrics)

    screenDensity = metrics.densityDpi

    val display = windowManager.defaultDisplay
    val size = Point()
    display.getSize(size)

    displayWidth = size.x
    displayHeight = size.y

    mMediaRecorder = MediaRecorder()
}

private fun startRecording() {

    Log.d(tag, "StartRecording Executed")

    setupFilePath()

    Log.d(tag, "AltSavingModeValue - $altSavingMode")

    initRecorder()
    prepareRecorder()

    isScreenRecordingGranted = Hawk.get("isScreenRecordingGranted", false)

    Log.d(TAG, "startRecording: isScreenRecordingGranted - $isScreenRecordingGranted")

    if (mediaProjection == null) {
        Log.d(TAG, "startRecording: init mediaprojection")
        startActivityForResult(mediaProjectionManager?.createScreenCaptureIntent(), VIDEO_PERMISSION_CODE)
        return
    } else {
        virtualDisplay = createVirtualDisplay()
        mMediaRecorder?.start()

        isRecording = true
        Hawk.put("isRecording", isRecording)
        updateRecordingLabel()

        navigationBar?.visibility = View.GONE
        recordButton.setImageDrawable(this.getDrawable(R.drawable.ic_stop))
        blinkRec()
    }
}

private fun stopRecording() {

    Log.d(tag, "stopRecording Executed")

    isRecording = false
    updateRecordingLabel()
    Hawk.put("isRecording", isRecording)

    if (!altSavingMode) {

        mMediaRecorder?.stop()
        mMediaRecorder?.reset()

        if (virtualDisplay == null) {
            return
        }

        virtualDisplay?.release()
        addVideoToGallery()
    }
    getLocation()
    getDate()
}

1 Ответ

0 голосов
/ 29 ноября 2018

Извините, ребята, это невозможно, потому что некоторые устройства не поддерживают это.Некоторые устройства поддерживают потоковую передачу видеокамеры с обеих сторон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...