Мое приложение использует функцию камеры и имеет логику потокового видео.Он показывает одновременно потоковую передачу с камеры и хорошо работает в 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?
Как видите, пустая часть должна отображать потоковую передачу с камеры, но не работает.
Нельзя ли показывать оба экрана камеры на 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()
}