Exoplayer поддерживает слушателей, которые вы можете использовать для отслеживания ошибок и реагирования на них по своему усмотрению - информация доступна здесь:
Вы можете добавить слушателей в свой экземпляр плеера:
yourExoPlayerInstance.addListener(new Player.EventListener() {
@Override
public void onPlayerError(ExoPlaybackException e) {
//Add you code to check the error type here
//and take whatver actions you need
}
});
Обратите внимание, что ошибки DRM от сервера DRM иногда могут быть расплывчатыми и содержать мало деталей. Возможно, это сделано для того, чтобы злоумышленники не пытались узнать, как ведут себя серверы DRM (или потому, что они забыли добавить более точные причины ошибок ...).
Если посмотреть конкретно на случай, когда контент воспроизводится на реальном устройстве, но не в эмуляторе - системы DRM на мобильных устройствах обычно прочно связаны с HW на устройстве, используя корень доверия HW.
Когда вы запускаете приложение в эмуляторе, эта HW-ссылка отсутствует, и некоторые безопасные приложения и операции, такие как DRM, не будут работать.
В качестве чрезмерно упрощенной, но, надеюсь, полезной иллюстрации, если вы можете представить, что ключ дешифрования хранится в некоторой `` HW-защищенной '' памяти на реальном устройстве, на эмуляторе это должно быть эмулировано в SW, и это может быть значительно проще. перепроектировать и, следовательно, обнаружить ключ дешифрования.
На самом деле эмуляторы в некоторых случаях могут передавать эти типы защищенных функций на базовую платформу, на которой они работают, поэтому вы можете найти для некоторых экосистем и эмуляторов, что это будет работать. Однако, даже если это заставит вас уйти от того, как приложение на самом деле работает на реальном устройстве, вероятно, безопаснее всего протестировать такие варианты использования на реальных устройствах, где это возможно.
person
Mick
schedule
15.01.2021