From 88f8c768b0aca93da652d3955dda846dbc03b97f Mon Sep 17 00:00:00 2001 From: eneim Date: Thu, 18 Jan 2018 09:36:48 +0900 Subject: [PATCH] Also check if the Uri is built for raw resource data, and then create the RawResourceDataSource for it. --- .../exoplayer2/upstream/DefaultDataSource.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultDataSource.java index 853b40f73f..6d22f8b6c5 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultDataSource.java @@ -31,6 +31,9 @@ import java.lang.reflect.InvocationTargetException; * /path/to/media/media.mp4 because the implementation assumes that a URI without a scheme is a * local file URI). *
  • asset: For fetching data from an asset in the application's apk (e.g. asset:///media.mp4). + *
  • rawresource: For fetching data from a raw resource in the applications' apk + * (e.g. rawresource:///resourceId, where rawResourceId is the integer identifier of the raw + * resource).
  • *
  • content: For fetching data from a content URI (e.g. content://authority/path/123). *
  • rtmp: For fetching data over RTMP. Only supported if the project using ExoPlayer has an * explicit dependency on ExoPlayer's RTMP extension.
  • @@ -48,6 +51,7 @@ public final class DefaultDataSource implements DataSource { private static final String SCHEME_ASSET = "asset"; private static final String SCHEME_CONTENT = "content"; private static final String SCHEME_RTMP = "rtmp"; + private static final String SCHEME_RAW = RawResourceDataSource.RAW_RESOURCE_SCHEME; private final Context context; private final TransferListener listener; @@ -60,6 +64,7 @@ public final class DefaultDataSource implements DataSource { private DataSource contentDataSource; private DataSource rtmpDataSource; private DataSource dataSchemeDataSource; + private DataSource rawResourceDataSource; private DataSource dataSource; @@ -134,6 +139,8 @@ public final class DefaultDataSource implements DataSource { dataSource = getRtmpDataSource(); } else if (DataSchemeDataSource.SCHEME_DATA.equals(scheme)) { dataSource = getDataSchemeDataSource(); + } else if (SCHEME_RAW.equals(scheme)) { + dataSource = getRawResourceDataSource(); } else { dataSource = baseDataSource; } @@ -213,4 +220,10 @@ public final class DefaultDataSource implements DataSource { return dataSchemeDataSource; } + private DataSource getRawResourceDataSource() { + if (rawResourceDataSource == null) { + rawResourceDataSource = new RawResourceDataSource(context, listener); + } + return rawResourceDataSource; + } }