From 81a7e1cbdb810aec82f2285c1e064859ec7568c7 Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 10 Feb 2023 21:35:07 +0800 Subject: [PATCH] Add default header --- .../com/fongmi/android/tv/player/ExoUtil.java | 3 +++ .../java/com/fongmi/android/tv/utils/Utils.java | 5 ----- .../ijk/media/player/ui/IjkVideoView.java | 6 +++--- .../tv/danmaku/ijk/media/player/ui/Utils.java | 17 +++++++++++++++++ 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java index 1ce630f05..06ce78315 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java @@ -34,6 +34,8 @@ import com.google.android.exoplayer2.upstream.cache.CacheDataSource; import com.google.android.exoplayer2.upstream.cache.NoOpCacheEvictor; import com.google.android.exoplayer2.upstream.cache.SimpleCache; import com.google.android.exoplayer2.util.MimeTypes; +import com.google.android.exoplayer2.util.Util; +import com.google.common.net.HttpHeaders; import java.util.ArrayList; import java.util.Collections; @@ -106,6 +108,7 @@ public class ExoUtil { } private static synchronized DataSource.Factory getDataSourceFactory(Map headers) { + if (!headers.containsKey(HttpHeaders.USER_AGENT)) headers.put(HttpHeaders.USER_AGENT, Util.getUserAgent(App.get(), App.get().getPackageName())); if (dataSourceFactory == null) dataSourceFactory = buildReadOnlyCacheDataSource(new DefaultDataSource.Factory(App.get(), getHttpDataSourceFactory()), getCache()); httpDataSourceFactory.setDefaultRequestProperties(headers); return dataSourceFactory; diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Utils.java b/app/src/main/java/com/fongmi/android/tv/utils/Utils.java index 5ad650318..189aa8ebb 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Utils.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Utils.java @@ -16,7 +16,6 @@ import androidx.fragment.app.FragmentActivity; import com.fongmi.android.tv.App; import com.fongmi.android.tv.server.Server; -import com.google.android.exoplayer2.util.Util; import com.permissionx.guolindev.PermissionX; import java.math.BigInteger; @@ -124,10 +123,6 @@ public class Utils { } } - public static String getUserAgent() { - return Util.getUserAgent(App.get(), App.get().getPackageName().concat(".").concat(getUUID())); - } - public static String getUUID() { return Settings.Secure.getString(App.get().getContentResolver(), Settings.Secure.ANDROID_ID); } 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 9b5429a1e..66cad8f1e 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 @@ -176,9 +176,9 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl } private void fixUserAgent() { - if (mHeaders == null || !mHeaders.containsKey("User-Agent")) return; - mIjkPlayer.setOption(format, "user_agent", mHeaders.get("User-Agent")); - mHeaders.remove("User-Agent"); + if (!mHeaders.containsKey(Utils.USER_AGENT)) mHeaders.put(Utils.USER_AGENT, Utils.getUserAgent(mAppContext)); + mIjkPlayer.setOption(format, "user_agent", mHeaders.get(Utils.USER_AGENT)); + mHeaders.remove(Utils.USER_AGENT); } IMediaPlayer.OnVideoSizeChangedListener mSizeChangedListener = new IMediaPlayer.OnVideoSizeChangedListener() { diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/Utils.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/Utils.java index 27ccd9d33..da5235001 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/Utils.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/Utils.java @@ -1,11 +1,28 @@ package tv.danmaku.ijk.media.player.ui; import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Build; import android.util.DisplayMetrics; public class Utils { + public static final String USER_AGENT = "User-Agent"; + public static float dp2px(Context context, float dpValue) { return Math.round((dpValue * context.getResources().getDisplayMetrics().densityDpi) / DisplayMetrics.DENSITY_DEFAULT); } + + public static String getUserAgent(Context context) { + String versionName; + try { + String packageName = context.getPackageName(); + PackageInfo info = context.getPackageManager().getPackageInfo(packageName, 0); + versionName = info.versionName; + } catch (PackageManager.NameNotFoundException e) { + versionName = "?"; + } + return context.getPackageName() + "/" + versionName + " (Linux;Android " + Build.VERSION.RELEASE + ") " + "IjkPlayerLib/0.8.9"; + } }