From da198b19fd88aa19e21b6afb988849d985f44d71 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 1 Jun 2023 11:30:19 +0800 Subject: [PATCH] Clean code --- ijkplayer/build.gradle | 1 + .../ijk/media/player/IMediaPlayer.java | 15 ++------ .../ijk/media/player/IjkMediaPlayer.java | 38 +------------------ .../ijk/media/player/ui/IjkVideoView.java | 2 +- 4 files changed, 8 insertions(+), 48 deletions(-) diff --git a/ijkplayer/build.gradle b/ijkplayer/build.gradle index ccc5bd5a9..c90fcdd0e 100644 --- a/ijkplayer/build.gradle +++ b/ijkplayer/build.gradle @@ -13,4 +13,5 @@ android { dependencies { implementation 'androidx.annotation:annotation:1.5.0' + api 'com.hierynomus:smbj:0.11.5' } \ No newline at end of file diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IMediaPlayer.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IMediaPlayer.java index c85d4bc38..2d5a901d4 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IMediaPlayer.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IMediaPlayer.java @@ -17,11 +17,9 @@ package tv.danmaku.ijk.media.player; -import android.annotation.TargetApi; import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; -import android.os.Build; import android.view.Surface; import android.view.SurfaceHolder; @@ -70,18 +68,13 @@ public interface IMediaPlayer { void setDisplay(SurfaceHolder sh); - void setDataSource(Context context, Uri uri) - throws IOException, IllegalArgumentException, SecurityException, IllegalStateException; + void setDataSource(Context context, Uri uri) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException; - @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) - void setDataSource(Context context, Uri uri, Map headers) - throws IOException, IllegalArgumentException, SecurityException, IllegalStateException; + void setDataSource(Context context, Uri uri, Map headers) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException; - void setDataSource(FileDescriptor fd) - throws IOException, IllegalArgumentException, IllegalStateException; + void setDataSource(FileDescriptor fd) throws IOException, IllegalArgumentException, IllegalStateException; - void setDataSource(String path) - throws IOException, IllegalArgumentException, SecurityException, IllegalStateException; + void setDataSource(String path) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException; String getDataSource(); diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java index b13458b4e..7bc23306c 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java @@ -20,12 +20,10 @@ package tv.danmaku.ijk.media.player; import android.content.ContentResolver; import android.content.Context; -import android.content.res.AssetFileDescriptor; import android.graphics.Bitmap; import android.graphics.SurfaceTexture; import android.media.MediaCodecInfo; import android.media.MediaCodecList; -import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -33,14 +31,12 @@ import android.os.Looper; import android.os.Message; import android.os.ParcelFileDescriptor; import android.os.PowerManager; -import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import android.view.Surface; import android.view.SurfaceHolder; import java.io.FileDescriptor; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.lang.ref.WeakReference; @@ -329,39 +325,9 @@ public final class IjkMediaPlayer extends AbstractMediaPlayer { String scheme = uri.getScheme(); if (ContentResolver.SCHEME_FILE.equals(scheme)) { setDataSource(uri.getPath()); - return; - } else if (ContentResolver.SCHEME_CONTENT.equals(scheme) && Settings.AUTHORITY.equals(uri.getAuthority())) { - // Redirect ringtones to go directly to underlying provider - uri = RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.getDefaultType(uri)); - if (uri == null) { - throw new FileNotFoundException("Failed to resolve default ringtone"); - } - } - - AssetFileDescriptor fd = null; - try { - ContentResolver resolver = context.getContentResolver(); - fd = resolver.openAssetFileDescriptor(uri, "r"); - if (fd == null) { - return; - } - // Note: using getDeclaredLength so that our behavior is the same - // as previous versions when the content provider is returning - // a full file. - if (fd.getDeclaredLength() < 0) { - setDataSource(fd.getFileDescriptor()); - } else { - setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getDeclaredLength()); - } - return; - } catch (SecurityException | IOException ignored) { - } finally { - if (fd != null) { - fd.close(); - } + } else { + setDataSource(encodeSpaceChinese(uri.toString()), headers); } - - setDataSource(encodeSpaceChinese(uri.toString()), headers); } private String encodeSpaceChinese(String str) throws UnsupportedEncodingException { diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java index fd98d4980..75fbb4f00 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java @@ -407,7 +407,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl mPlayer.setOption(player, "soundtouch", 1); mPlayer.setOption(player, "start-on-prepared", 1); mPlayer.setOption(player, "subtitle", 1); - mPlayer.setOption(format, "protocol_whitelist", "async,cache,crypto,file,http,https,ijkhttphook,ijkinject,ijklivehook,ijklongurl,ijksegment,ijktcphook,pipe,rtmp,rtp,tcp,tls,udp,ijkurlhook,data"); + mPlayer.setOption(format, "protocol_whitelist", "async,cache,crypto,file,http,https,pipe,rtmp,rtp,tcp,tls,udp,data,ijkinject,ijklongurl,ijksegment,ijkhttphook,ijklivehook,ijktcphook,ijkurlhook,ijkmediadatasource"); if (url.contains("rtsp") || url.contains("udp") || url.contains("rtp")) { mPlayer.setOption(format, "infbuf", 1); mPlayer.setOption(format, "rtsp_transport", "tcp");