mirror of https://github.com/FongMi/TV.git
parent
71ca71a6e8
commit
4c1ff7a65d
@ -1,74 +1,39 @@ |
||||
package com.fongmi.android.tv.player.exo; |
||||
|
||||
import android.content.res.Resources; |
||||
|
||||
import androidx.media3.common.PlaybackException; |
||||
import androidx.media3.exoplayer.mediacodec.MediaCodecRenderer; |
||||
import androidx.media3.exoplayer.mediacodec.MediaCodecUtil; |
||||
|
||||
import com.fongmi.android.tv.App; |
||||
import com.fongmi.android.tv.R; |
||||
|
||||
public class ErrorMsgProvider { |
||||
|
||||
private final Resources resources; |
||||
|
||||
public ErrorMsgProvider() { |
||||
this.resources = App.get().getResources(); |
||||
} |
||||
|
||||
public String get(PlaybackException e) { |
||||
if (e.getCause() instanceof MediaCodecRenderer.DecoderInitializationException e2) return custom(e2); |
||||
return resources.getString(getId(e.errorCode)); |
||||
} |
||||
|
||||
private String custom(MediaCodecRenderer.DecoderInitializationException e) { |
||||
if (e.codecInfo != null) return resources.getString(R.string.error_instantiating_decoder, e.codecInfo.name); |
||||
if (e.getCause() instanceof MediaCodecUtil.DecoderQueryException) return resources.getString(R.string.error_querying_decoders); |
||||
else if (e.secureDecoderRequired) return resources.getString(R.string.error_no_secure_decoder, e.mimeType); |
||||
else return resources.getString(R.string.error_no_decoder, e.mimeType); |
||||
} |
||||
|
||||
private int getId(int errorCode) { |
||||
return switch (errorCode) { |
||||
case PlaybackException.ERROR_CODE_REMOTE_ERROR -> R.string.error_remote_error; |
||||
case PlaybackException.ERROR_CODE_BEHIND_LIVE_WINDOW -> R.string.error_behind_live_window; |
||||
case PlaybackException.ERROR_CODE_TIMEOUT -> R.string.error_timeout; |
||||
case PlaybackException.ERROR_CODE_FAILED_RUNTIME_CHECK -> R.string.error_failed_runtime_check; |
||||
case PlaybackException.ERROR_CODE_IO_UNSPECIFIED -> R.string.error_io_unspecified; |
||||
case PlaybackException.ERROR_CODE_IO_NETWORK_CONNECTION_FAILED -> R.string.error_io_network_connection_failed; |
||||
case PlaybackException.ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT -> R.string.error_io_network_connection_timeout; |
||||
case PlaybackException.ERROR_CODE_IO_INVALID_HTTP_CONTENT_TYPE -> R.string.error_io_invalid_http_content_type; |
||||
case PlaybackException.ERROR_CODE_IO_BAD_HTTP_STATUS -> R.string.error_io_bad_http_status; |
||||
case PlaybackException.ERROR_CODE_IO_FILE_NOT_FOUND -> R.string.error_io_file_not_found; |
||||
case PlaybackException.ERROR_CODE_IO_NO_PERMISSION -> R.string.error_io_no_permission; |
||||
case PlaybackException.ERROR_CODE_IO_CLEARTEXT_NOT_PERMITTED -> R.string.error_io_cleartext_not_permitted; |
||||
case PlaybackException.ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE -> R.string.error_io_read_position_out_of_range; |
||||
case PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED -> R.string.error_parsing_container_malformed; |
||||
case PlaybackException.ERROR_CODE_PARSING_MANIFEST_MALFORMED -> R.string.error_parsing_manifest_malformed; |
||||
case PlaybackException.ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED -> R.string.error_parsing_container_unsupported; |
||||
case PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED -> R.string.error_parsing_manifest_unsupported; |
||||
case PlaybackException.ERROR_CODE_DECODER_INIT_FAILED -> R.string.error_decoder_init_failed; |
||||
case PlaybackException.ERROR_CODE_DECODER_QUERY_FAILED -> R.string.error_decoder_query_failed; |
||||
case PlaybackException.ERROR_CODE_DECODING_FAILED -> R.string.error_decoding_failed; |
||||
case PlaybackException.ERROR_CODE_DECODING_FORMAT_EXCEEDS_CAPABILITIES -> R.string.error_decoding_format_exceeds_capabilities; |
||||
case PlaybackException.ERROR_CODE_DECODING_FORMAT_UNSUPPORTED -> R.string.error_decoding_format_unsupported; |
||||
case PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED -> R.string.error_decoding_resources_reclaimed; |
||||
case PlaybackException.ERROR_CODE_AUDIO_TRACK_INIT_FAILED -> R.string.error_audio_track_init_failed; |
||||
case PlaybackException.ERROR_CODE_AUDIO_TRACK_WRITE_FAILED -> R.string.error_audio_track_write_failed; |
||||
case PlaybackException.ERROR_CODE_AUDIO_TRACK_OFFLOAD_WRITE_FAILED -> R.string.error_audio_track_offload_write_failed; |
||||
case PlaybackException.ERROR_CODE_AUDIO_TRACK_OFFLOAD_INIT_FAILED -> R.string.error_audio_track_offload_init_failed; |
||||
case PlaybackException.ERROR_CODE_DRM_UNSPECIFIED -> R.string.error_drm_unspecified; |
||||
case PlaybackException.ERROR_CODE_DRM_PROVISIONING_FAILED -> R.string.error_drm_provisioning_failed; |
||||
case PlaybackException.ERROR_CODE_DRM_CONTENT_ERROR -> R.string.error_drm_content_error; |
||||
case PlaybackException.ERROR_CODE_DRM_LICENSE_ACQUISITION_FAILED -> R.string.error_drm_license_acquisition_failed; |
||||
case PlaybackException.ERROR_CODE_DRM_DISALLOWED_OPERATION -> R.string.error_drm_disallowed_operation; |
||||
case PlaybackException.ERROR_CODE_DRM_SYSTEM_ERROR -> R.string.error_drm_system_error; |
||||
case PlaybackException.ERROR_CODE_DRM_DEVICE_REVOKED -> R.string.error_drm_device_revoked; |
||||
case PlaybackException.ERROR_CODE_DRM_LICENSE_EXPIRED -> R.string.error_drm_license_expired; |
||||
case PlaybackException.ERROR_CODE_VIDEO_FRAME_PROCESSOR_INIT_FAILED -> R.string.error_video_frame_processor_init_failed; |
||||
case PlaybackException.ERROR_CODE_VIDEO_FRAME_PROCESSING_FAILED -> R.string.error_video_frame_processing_failed; |
||||
default -> R.string.error_unspecified; |
||||
return switch (e.errorCode) { |
||||
case PlaybackException.ERROR_CODE_UNSPECIFIED -> "Unspecified"; |
||||
case PlaybackException.ERROR_CODE_IO_UNSPECIFIED -> "IO Unspecified"; |
||||
case PlaybackException.ERROR_CODE_IO_NETWORK_CONNECTION_FAILED -> "Network Connection Failed"; |
||||
case PlaybackException.ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT -> "Network Connection Timeout"; |
||||
case PlaybackException.ERROR_CODE_IO_INVALID_HTTP_CONTENT_TYPE -> "Invalid HTTP Content Type"; |
||||
case PlaybackException.ERROR_CODE_IO_BAD_HTTP_STATUS -> "Bad HTTP Status"; |
||||
case PlaybackException.ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE -> "Read Position Out Of Range"; |
||||
case PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED -> "Container Malformed"; |
||||
case PlaybackException.ERROR_CODE_PARSING_MANIFEST_MALFORMED -> "Manifest Malformed"; |
||||
case PlaybackException.ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED -> "Container Unsupported"; |
||||
case PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED -> "Manifest Unsupported"; |
||||
case PlaybackException.ERROR_CODE_DECODER_INIT_FAILED -> "Decoder Init Failed"; |
||||
case PlaybackException.ERROR_CODE_DECODER_QUERY_FAILED -> "Decoder Query Failed"; |
||||
case PlaybackException.ERROR_CODE_DECODING_FAILED -> "Decoding Failed"; |
||||
case PlaybackException.ERROR_CODE_DECODING_FORMAT_EXCEEDS_CAPABILITIES -> "Decoding Format Exceeds Capabilities"; |
||||
case PlaybackException.ERROR_CODE_DECODING_FORMAT_UNSUPPORTED -> "Decoding Format Unsupported"; |
||||
case PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED -> "Decoding Resources Reclaimed"; |
||||
case PlaybackException.ERROR_CODE_AUDIO_TRACK_INIT_FAILED -> "Audio Track Init Failed"; |
||||
case PlaybackException.ERROR_CODE_AUDIO_TRACK_WRITE_FAILED -> "Audio Track Write Failed"; |
||||
case PlaybackException.ERROR_CODE_DRM_UNSPECIFIED -> "DRM Unspecified"; |
||||
case PlaybackException.ERROR_CODE_DRM_PROVISIONING_FAILED -> "DRM Provisioning Failed"; |
||||
case PlaybackException.ERROR_CODE_DRM_CONTENT_ERROR -> "DRM Content Error"; |
||||
case PlaybackException.ERROR_CODE_DRM_LICENSE_ACQUISITION_FAILED -> "DRM License Acquisition Failed"; |
||||
case PlaybackException.ERROR_CODE_DRM_DISALLOWED_OPERATION -> "DRM Disallowed Operation"; |
||||
case PlaybackException.ERROR_CODE_DRM_SYSTEM_ERROR -> "DRM System Error"; |
||||
case PlaybackException.ERROR_CODE_DRM_DEVICE_REVOKED -> "DRM Device Revoked"; |
||||
case PlaybackException.ERROR_CODE_DRM_LICENSE_EXPIRED -> "DRM License Expired"; |
||||
default -> e.getErrorCodeName(); |
||||
}; |
||||
} |
||||
} |
||||
|
||||
@ -1,44 +0,0 @@ |
||||
<resources xmlns:xliff="http://schemas.android.com/apk/res-auto"> |
||||
<string name="error_unspecified">发生未知错误</string> |
||||
<string name="error_remote_error">发生远程错误</string> |
||||
<string name="error_behind_live_window">直播内容已过期</string> |
||||
<string name="error_timeout">操作超时</string> |
||||
<string name="error_failed_runtime_check">系统检查失败</string> |
||||
<string name="error_io_unspecified">发生未知网络错误</string> |
||||
<string name="error_io_network_connection_failed">网络连接失败</string> |
||||
<string name="error_io_network_connection_timeout">网络连接超时</string> |
||||
<string name="error_io_invalid_http_content_type">内容类型无效</string> |
||||
<string name="error_io_bad_http_status">服务器发生错误</string> |
||||
<string name="error_io_file_not_found">找不到文件</string> |
||||
<string name="error_io_no_permission">您没有访问权限</string> |
||||
<string name="error_io_cleartext_not_permitted">不允许不安全的连接</string> |
||||
<string name="error_io_read_position_out_of_range">无法读取数据</string> |
||||
<string name="error_parsing_container_malformed">媒体文件已损坏</string> |
||||
<string name="error_parsing_manifest_malformed">媒体信息已损坏</string> |
||||
<string name="error_parsing_container_unsupported">不支持的文件格式</string> |
||||
<string name="error_parsing_manifest_unsupported">不支持的媒体类型</string> |
||||
<string name="error_decoder_init_failed">解码器初始化失败</string> |
||||
<string name="error_decoder_query_failed">解码器查询失败</string> |
||||
<string name="error_decoding_failed">解码失败</string> |
||||
<string name="error_decoding_format_exceeds_capabilities">解码格式超出设备能力</string> |
||||
<string name="error_decoding_format_unsupported">不支持的解码格式</string> |
||||
<string name="error_decoding_resources_reclaimed">解码资源已回收</string> |
||||
<string name="error_audio_track_init_failed">无法初始化音频</string> |
||||
<string name="error_audio_track_write_failed">无法写入音频数据</string> |
||||
<string name="error_audio_track_offload_write_failed">音频硬件解码写入错误</string> |
||||
<string name="error_audio_track_offload_init_failed">音频硬件解码初始化错误</string> |
||||
<string name="error_drm_unspecified">未指定的数字版权管理错误</string> |
||||
<string name="error_drm_provisioning_failed">数字版权管理配制失败</string> |
||||
<string name="error_drm_content_error">数字版权管理内容错误</string> |
||||
<string name="error_drm_license_acquisition_failed">数字版权管理授权获取失败</string> |
||||
<string name="error_drm_disallowed_operation">数字版权管理不允许的操作</string> |
||||
<string name="error_drm_system_error">数字版权管理系统错误</string> |
||||
<string name="error_drm_device_revoked">数字版权管理设备已撤销</string> |
||||
<string name="error_drm_license_expired">数字版权管理授权已过期</string> |
||||
<string name="error_video_frame_processor_init_failed">无法初始化视频处理器</string> |
||||
<string name="error_video_frame_processing_failed">视频处理失败</string> |
||||
<string name="error_no_decoder">此设备不支持 <xliff:g id="mime_type">%1$s</xliff:g> 格式</string> |
||||
<string name="error_no_secure_decoder">此设备无法安全播放 <xliff:g id="mime_type">%1$s</xliff:g> 格式</string> |
||||
<string name="error_querying_decoders">无法查询设备的播放功能</string> |
||||
<string name="error_instantiating_decoder">无法启用播放组件 <xliff:g id="decoder_name">%1$s</xliff:g></string> |
||||
</resources> |
||||
@ -1,44 +0,0 @@ |
||||
<resources xmlns:xliff="http://schemas.android.com/apk/res-auto"> |
||||
<string name="error_unspecified">發生未知錯誤</string> |
||||
<string name="error_remote_error">發生遠端錯誤</string> |
||||
<string name="error_behind_live_window">直播內容已過期</string> |
||||
<string name="error_timeout">操作逾時</string> |
||||
<string name="error_failed_runtime_check">系統檢查失敗</string> |
||||
<string name="error_io_unspecified">發生未知網路錯誤</string> |
||||
<string name="error_io_network_connection_failed">網路連線失敗</string> |
||||
<string name="error_io_network_connection_timeout">網路連線逾時</string> |
||||
<string name="error_io_invalid_http_content_type">內容類型無效</string> |
||||
<string name="error_io_bad_http_status">伺服器發生錯誤</string> |
||||
<string name="error_io_file_not_found">找不到檔案</string> |
||||
<string name="error_io_no_permission">您沒有存取權限</string> |
||||
<string name="error_io_cleartext_not_permitted">不允許不安全的連線</string> |
||||
<string name="error_io_read_position_out_of_range">無法讀取資料</string> |
||||
<string name="error_parsing_container_malformed">媒體檔案已損毀</string> |
||||
<string name="error_parsing_manifest_malformed">媒體資訊已損毀</string> |
||||
<string name="error_parsing_container_unsupported">不支援的檔案格式</string> |
||||
<string name="error_parsing_manifest_unsupported">不支援的媒體類型</string> |
||||
<string name="error_decoder_init_failed">解碼器初始化失敗</string> |
||||
<string name="error_decoder_query_failed">解碼器查詢失敗</string> |
||||
<string name="error_decoding_failed">解碼失敗</string> |
||||
<string name="error_decoding_format_exceeds_capabilities">解碼格式超出裝置能力</string> |
||||
<string name="error_decoding_format_unsupported">不支援的解碼格式</string> |
||||
<string name="error_decoding_resources_reclaimed">解碼資源已回收</string> |
||||
<string name="error_audio_track_init_failed">無法初始化音訊</string> |
||||
<string name="error_audio_track_write_failed">無法寫入音訊資料</string> |
||||
<string name="error_audio_track_offload_write_failed">音訊硬體解碼寫入錯誤</string> |
||||
<string name="error_audio_track_offload_init_failed">音訊硬體解碼初始化錯誤</string> |
||||
<string name="error_drm_unspecified">未指定的數位版權管理錯誤</string> |
||||
<string name="error_drm_provisioning_failed">數位版權管理佈建失敗</string> |
||||
<string name="error_drm_content_error">數位版權管理內容錯誤</string> |
||||
<string name="error_drm_license_acquisition_failed">數位版權管理授權獲取失敗</string> |
||||
<string name="error_drm_disallowed_operation">數位版權管理不允許的操作</string> |
||||
<string name="error_drm_system_error">數位版權管理系統錯誤</string> |
||||
<string name="error_drm_device_revoked">數位版權管理裝置已撤銷</string> |
||||
<string name="error_drm_license_expired">數位版權管理授權已過期</string> |
||||
<string name="error_video_frame_processor_init_failed">無法初始化影片處理器</string> |
||||
<string name="error_video_frame_processing_failed">影片處理失敗</string> |
||||
<string name="error_no_decoder">此裝置不支援 <xliff:g id="mime_type">%1$s</xliff:g> 格式</string> |
||||
<string name="error_no_secure_decoder">此裝置無法安全播放 <xliff:g id="mime_type">%1$s</xliff:g> 格式</string> |
||||
<string name="error_querying_decoders">無法查詢裝置的播放功能</string> |
||||
<string name="error_instantiating_decoder">無法啟用播放元件 <xliff:g id="decoder_name">%1$s</xliff:g></string> |
||||
</resources> |
||||
@ -1,44 +0,0 @@ |
||||
<resources xmlns:xliff="http://schemas.android.com/apk/res-auto"> |
||||
<string name="error_unspecified">An unknown error occurred</string> |
||||
<string name="error_remote_error">A remote error occurred</string> |
||||
<string name="error_behind_live_window">Content is behind live window</string> |
||||
<string name="error_timeout">The operation timed out</string> |
||||
<string name="error_failed_runtime_check">A system check failed</string> |
||||
<string name="error_io_unspecified">An unknown network error occurred</string> |
||||
<string name="error_io_network_connection_failed">Network connection failed</string> |
||||
<string name="error_io_network_connection_timeout">Network connection timed out</string> |
||||
<string name="error_io_invalid_http_content_type">Invalid content type</string> |
||||
<string name="error_io_bad_http_status">Server error occurred</string> |
||||
<string name="error_io_file_not_found">File not found</string> |
||||
<string name="error_io_no_permission">You do not have permission to access this</string> |
||||
<string name="error_io_cleartext_not_permitted">Insecure connection not permitted</string> |
||||
<string name="error_io_read_position_out_of_range">Unable to read data</string> |
||||
<string name="error_parsing_container_malformed">Media file is corrupted</string> |
||||
<string name="error_parsing_manifest_malformed">Media info is corrupted</string> |
||||
<string name="error_parsing_container_unsupported">Unsupported file format</string> |
||||
<string name="error_parsing_manifest_unsupported">Unsupported media type</string> |
||||
<string name="error_decoder_init_failed">Decoder initialization failed</string> |
||||
<string name="error_decoder_query_failed">Decoder query failed</string> |
||||
<string name="error_decoding_failed">Decoding failed</string> |
||||
<string name="error_decoding_format_exceeds_capabilities">Decoding format exceeds capabilities</string> |
||||
<string name="error_decoding_format_unsupported">Unsupported decoding format</string> |
||||
<string name="error_decoding_resources_reclaimed">Decoding resources reclaimed</string> |
||||
<string name="error_audio_track_init_failed">Could not initialize audio</string> |
||||
<string name="error_audio_track_write_failed">Could not write audio data</string> |
||||
<string name="error_audio_track_offload_write_failed">Audio hardware decoding write error</string> |
||||
<string name="error_audio_track_offload_init_failed">Audio hardware decoding init error</string> |
||||
<string name="error_drm_unspecified">Unspecified DRM error</string> |
||||
<string name="error_drm_provisioning_failed">DRM provisioning failed</string> |
||||
<string name="error_drm_content_error">DRM content error</string> |
||||
<string name="error_drm_license_acquisition_failed">DRM license acquisition failed</string> |
||||
<string name="error_drm_disallowed_operation">DRM disallowed operation</string> |
||||
<string name="error_drm_system_error">DRM system error</string> |
||||
<string name="error_drm_device_revoked">DRM device revoked</string> |
||||
<string name="error_drm_license_expired">DRM license expired</string> |
||||
<string name="error_video_frame_processor_init_failed">Could not initialize video processor</string> |
||||
<string name="error_video_frame_processing_failed">Video processing failed</string> |
||||
<string name="error_no_decoder">This device does not provide a decoder for <xliff:g id="mime_type">%1$s</xliff:g></string> |
||||
<string name="error_no_secure_decoder">This device does not provide a secure decoder for <xliff:g id="mime_type">%1$s</xliff:g></string> |
||||
<string name="error_querying_decoders">Unable to query device decoders</string> |
||||
<string name="error_instantiating_decoder">Unable to instantiate decoder <xliff:g id="decoder_name">%1$s</xliff:g></string> |
||||
</resources> |
||||
Loading…
Reference in new issue