在Android应用程序中恢复视频时处理ExoPlayer音频焦点丢失

siotufzp  于 2024-01-04  发布在  Android
关注(0)|答案(2)|浏览(180)

bounty将在23小时后过期。回答此问题可获得+50声望奖励。Giru Bhai希望引起更多关注此问题。

我在使用ExoPlayer的Android应用中遇到音频焦点问题。情况如下:
1.我的app里有视频。
1.我切换到浏览器(例如,Chrome),并开始播放视频(让我们说现场新闻从AajTak/NDTV新闻频道网站),这暂停我的应用程序的视频。
1.当我切换回我的应用程序并恢复视频时,它播放了几分之一秒,然后停止,引用WHEN_READY_CHANGE_REASON_AUDIO_FOCUS_LOSS作为原因。
1.有趣的是,浏览器中的视频已经暂停。
这个问题似乎发生在其他应用程序,如YouTube(在YouTube中播放视频,然后执行上述步骤.YouTube视频也会在一段时间后自动停止),它们以类似的方式失去音频焦点。
我正在寻找有关如何在应用程序中顺利处理此音频焦点转换的见解或解决方案。是否有方法确保在恢复视频时应用程序中恢复稳定的音频焦点?
任何建议或意见,有效地处理这个音频焦点问题将不胜感激。

9wbgstp7

9wbgstp71#

您可以尝试创建AudioAttributes如下所示,

  1. val audioAttributes: AudioAttributes = AudioAttributes.Builder()
  2. .setUsage(C.USAGE_MEDIA)
  3. .setContentType(C.CONTENT_TYPE_MOVIE)
  4. .build()

字符串
当你使用builder创建exoplayer示例时,

  1. setAudioAttributes(audioAttributes, true //Handle auto focus)


在这里,我提到了一个完整的解决方案,工作得很好,

  1. val audioAttributes: AudioAttributes = AudioAttributes.Builder()
  2. .setUsage(C.USAGE_MEDIA)
  3. .setContentType(C.CONTENT_TYPE_MOVIE)
  4. .build()
  5. val player = ExoPlayer.Builder(this)
  6. .setMediaSourceFactory(mediaSourceFactory)
  7. .setHandleAudioBecomingNoisy(true).setWakeMode(C.WAKE_MODE_LOCAL)
  8. .setAudioAttributes(audioAttributes, true).build()

展开查看全部
ohtdti5x

ohtdti5x2#

请注明您正在使用的设备的Android版本以及Exoplayer版本
用Youtube应用程序解决这个问题。它的可复制性。要克服这个问题,可能有以下解决方案:
1.对于root设备,您可以使用adb force stop命令来停止其他应用程序,当然需要PackageManager的帮助
1.对于无根设备,您可能需要让用户执行以下操作之一:i.停止他/她最近打开的应用程序中的视频播放或ii.强制停止他们观看视频的最近应用程序。您可以通过显示带有消息的对话框或漂亮屏幕来执行此操作
这是很难完全控制从开发人员方面,直到修复来自Android框架级别(我认为)。

相关问题