Сбой при открытии видео, когда PiP активен.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Сбой при открытии видео, когда PiP активен.

Сообщение Anonymous »

Когда pip активен и я пытаюсь запустить новое видео, у меня произошел сбой в проигрывателе Mpv. Как я могу решить эту проблему, если я попытаюсь остановить инициализацию mpv, тогда я не получу ни просмотра видео, ни какого-либо решения, связанного с этим или кто-нибудь знает перед началом активности Mpv, как я могу деактивировать PIP и снова инициализировать
вот код из фрагмента, где я пытаюсь открыть активность Mpv, и в активности есть метод PIP
`
private fun playFile(filepath: String) {
val i: Intent
if (filepath.startsWith("content://")) {
i = Intent(Intent.ACTION_VIEW, Uri.parse(filepath))
} else {
i = Intent()
i.putExtra("filepath", filepath)
}
i.setClass(requireContext(), MPVActivity::class.java)
playerLauncher.launch(i)
}`

а вот метод создания в Mpv Activity
`
override fun onCreate(icicle: Bundle?) { super.onCreate(icicle)
Utils.copyAssets(this)
BackgroundPlaybackService.createNotificationChannel(this)

binding = PlayerBinding.inflate(layoutInflater)
setContentView(binding.root)

// Init controls to be hidden and view fullscreen
hideControls()

// Initialize listeners for the player view
initListeners()

gestures = TouchGestures(this)

// set up initial UI state
readSettings()
onConfigurationChanged(resources.configuration)
run {
// edge-to-edge & immersive mode
WindowCompat.setDecorFitsSystemWindows(window, false)
val insetsController = WindowCompat.getInsetsController(window, window.decorView)
insetsController.systemBarsBehavior =
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE))
binding.topPiPBtn.visibility = View.GONE
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN))
binding.topLockBtn.visibility = View.GONE

if (showMediaTitle)
binding.controlsTitleGroup.visibility = View.VISIBLE

updateOrientation(true)

// Parse the intent
val filepath = parsePathFromIntent(intent)
if (intent.action == Intent.ACTION_VIEW) {
parseIntentExtras(intent.extras)
}

if (filepath == null) {
Log.e(TAG, "No file given, exiting")
showToast(getString(R.string.error_no_file))
finishWithResult(RESULT_CANCELED)
return
}

player.addObserver(this)
player.initialize(filesDir.path, cacheDir.path)

player.playFile(filepath)
mediaSession = initMediaSession()
updateMediaSession()
BackgroundPlaybackService.mediaToken = mediaSession?.sessionToken
audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
volumeControlStream = STREAM_TYPE
// Handle audio focus
val req = with (AudioFocusRequestCompat.Builder(AudioManagerCompat.AUDIOFOCUS_GAIN)) {
setAudioAttributes(with (AudioAttributesCompat.Builder()) {
// N.B.: libmpv may use different values in ao_audiotrack, but here we always pretend to be music.
setUsage(AudioAttributesCompat.USAGE_MEDIA)
setContentType(AudioAttributesCompat.CONTENT_TYPE_MUSIC)
build()
})
setOnAudioFocusChangeListener(audioFocusChangeListener)
build()
}
val res = AudioManagerCompat.requestAudioFocus(audioManager!!, req)
if (res == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
audioFocusRequest = req
} else {
Log.v(TAG, "Audio focus not granted")
if (!ignoreAudioFocus)
onloadCommands.add(arrayOf("set", "pause", "yes"))
}
}`

и вот журнал, который я получаю после сбоя, в котором говорится, что Mpv уже инициализирован, и эта строка приводит к сбою проигрывателя активности

Я просто хочу, как я могу отключиться пункт перед входом в активность Mpv
Выйти из системы
2024-10-07 21:40:19.476 18179-18179 mpv is.xyz.mpv E mpv is already initialized
2024-10-07 21:40:19.478 18179-18216 gralloc4 is.xyz.mpv I @set_metadata: update dataspace from GM (0x00000000 -> 0x08010000)
2024-10-07 21:40:19.478 18179-18511 gralloc4 is.xyz.mpv I @set_metadata: update dataspace from GM (0x00000000 -> 0x08010000)
2024-10-07 21:40:19.510 18179-18511 libc is.xyz.mpv A Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 18511 (Thread-7), pid 18179 (is.xyz.mpv)
2024-10-07 21:40:19.511 18179-18190 libc++abi is.xyz.mpv E Pure virtual function called!
2024-10-07 21:40:19.669 18179-18234 libc is.xyz.mpv A FORTIFY: pthread_mutex_lock called on a destroyed mutex (0x7ee314ea68)
2024-10-07 21:40:19.669 18179-18235 libc is.xyz.mpv A FORTIFY: pthread_mutex_lock called on a destroyed mutex (0x7ee314ea68)


Подробнее здесь: https://stackoverflow.com/questions/790 ... -is-active
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»