Недавнее обновление безопасности Включите устройства Android 14 для выбора «одно приложение» с захватом экрана. В моем приложении Android, когда пользователь выбирает «одно приложение», и выберите самое приложение в следующем диалоге, CreateVirtualDisplay () делает ошибку «не может создать виртуальный дисплей: xxxx (отображение имени)».
Изображение: выбрать «одно приложение»
Если возможно, я хочу узнать причину и исправить его. /> Ошибка происходит из этого кода. (не связанный код опущен) < /p>
Код: Выделить всё
class HogehogeActivity : AppCompatActivity(), org.webrtc.VideoCapturer {
private lateinit var screenCaptureLauncher: ActivityResultLauncher
private var surfaceTextureHelper: SurfaceTextureHelper? = null
override fun onCreate() {
screenCaptureLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode != Activity.RESULT_OK) {
return@registerForActivityResult
}
val data = it.data ?: return@registerForActivityResult
if (!Settings.canDrawOverlays(this)) return@registerForActivityResult
val manager = getSystemService(Context.MEDIA_PROJECTION_SERVICE) as? MediaProjectionManager ?: return@registerForActivityResult
val mediaProjection = manager.getMediaProjection(Activity.RESULT_OK, screenCaptureIntent) ?: return@registerForActivityResult
// Error occur: [DisplayManager] Could not create virtual display: WebRTC_ScreenCapture
val virtualDisplay = mediaProjection.createVirtualDisplay(
"WebRTC_ScreenCapture",
480,
640,
400,
VIRTUAL_DISPLAY_FLAG_PUBLIC.or(VIRTUAL_DISPLAY_FLAG_PRESENTATION),
Surface(surfaceTextureHelper?.surfaceTexture),
null,
null
)
}
// user tap button to start screen capture.
binding.button.setOnClickLisner {
val manager = (activity.getSystemService(Context.MEDIA_PROJECTION_SERVICE) as MediaProjectionManager)
val screenCaptureIntent = manager.createScreenCaptureIntent()
screenCaptureLauncher.launch(screenCaptureIntent)
}
}
override fun initialize(
surfaceTextureHelper: SurfaceTextureHelper?,
applicationContext: Context?,
capturerObserver: CapturerObserver?
) {
this.surfaceTextureHelper = surfaceTextureHelper
}
}
< /code>
Я попробовал < /p>
createVirtualDisplay()
Подробнее здесь: https://stackoverflow.com/questions/787 ... play-error