翰林优商.apk(点击下载) / VodPlayerUtils.java


package com.kwai.video.ksvodplayerkit.Utils;

import android.content.Context;
import android.net.Uri;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.WindowManager;
import com.kwai.video.ksvodplayerkit.CacheKeyGenerator;
import com.kwai.video.ksvodplayerkit.Logger.KSVodLogger;
import com.kwai.video.ksvodplayerkit.MultiRate.HlsAdaptationModel;
import com.kwai.video.ksvodplayerkit.MultiRate.HlsAdaptationModel_JsonUtils;
import com.kwai.video.ksvodplayerkit.MultiRate.HlsRepresentation;
import java.io.File;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import kotlin.UByte;
import org.json.JSONObject;

public class VodPlayerUtils {
    static final char[] HEX_CHARS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
    private static volatile CacheKeyGenerator mCacheKeyGenerator;

    public static String fileTypeByUrl(String str) {
        if (str != null && !TextUtils.isEmpty(str)) {
            try {
                String path = Uri.parse(str).getPath();
                if (path == null) {
                    return ".xxx";
                }
                int lastIndexOf = path.lastIndexOf(46);
                String substring = path.substring(lastIndexOf);
                return (lastIndexOf < 0 || lastIndexOf >= path.length() + -2) ? ".mp4" : substring != null ? substring.toLowerCase() : substring;
            } catch (Throwable th) {
                KSVodLogger.e("VodPlayerUtils", "fail to parse ext from url: " + str, th);
            }
        }
        return ".mp4";
    }

    public static String getCacheKey(String str) {
        if (mCacheKeyGenerator != null) {
            return mCacheKeyGenerator.getCacheKey(str);
        }
        String lowerCase = fileTypeByUrl(str).toLowerCase(Locale.US);
        try {
            String path = Uri.parse(str).getPath();
            if (!TextUtils.isEmpty(path)) {
                return md5Hex(path) + lowerCase;
            }
        } catch (Exception e) {
            KSVodLogger.e("VodPlayerUtils", e.getMessage());
        }
        return str;
    }

    public static int getFirstScreen(String str) {
        if (TextUtils.isEmpty(str)) {
            return -1;
        }
        try {
            return new JSONObject(new JSONObject(str).getString("qos")).getJSONObject("rt_cost").getInt("first_screen");
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }
    }

    public static List<HlsRepresentation> getHlsRepresentations(String str) {
        ArrayList arrayList = new ArrayList();
        HlsAdaptationModel fromJson = HlsAdaptationModel_JsonUtils.fromJson(str);
        if (!(fromJson == null || fromJson.adaptationSet == null)) {
            arrayList.addAll(fromJson.adaptationSet.representation);
        }
        return arrayList;
    }

    public static int getScreenHeight(Context context) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((WindowManager) context.getSystemService("window")).getDefaultDisplay().getMetrics(displayMetrics);
        return displayMetrics.heightPixels;
    }

    public static int getScreenWidth(Context context) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((WindowManager) context.getSystemService("window")).getDefaultDisplay().getMetrics(displayMetrics);
        return displayMetrics.widthPixels;
    }

    public static boolean isHttps(String str) {
        if (TextUtils.isEmpty(str)) {
            return false;
        }
        return str.toLowerCase().startsWith("https:");
    }

    public static boolean isLocalVideoPhoto(String str) {
        if (TextUtils.isEmpty(str) || !"file".equals(Uri.parse(str).getScheme())) {
            return false;
        }
        return new File(Uri.parse(str).getPath()).exists();
    }

    public static boolean isM3u8(String str) {
        if (TextUtils.isEmpty(str)) {
            return false;
        }
        return str.toLowerCase().contains(".m3u8");
    }

    public static boolean isNetworkPlayUrl(String str) {
        if (TextUtils.isEmpty(str)) {
            return false;
        }
        return str.toLowerCase().startsWith("http:") || str.toLowerCase().startsWith("https:");
    }

    public static String md5Hex(String str) {
        if (str == null) {
            return "";
        }
        try {
            if (str.length() == 0) {
                return "";
            }
            MessageDigest instance = MessageDigest.getInstance("MD5");
            if (instance == null) {
                return null;
            }
            instance.update(str.getBytes("UTF-8"));
            byte[] digest = instance.digest();
            if (digest != null && digest.length > 0) {
                return toHexString(digest, 0, digest.length);
            }
            return null;
        } catch (Throwable unused) {
        }
    }

    public static void setCacheKeyGenerator(CacheKeyGenerator cacheKeyGenerator) {
        mCacheKeyGenerator = cacheKeyGenerator;
    }

    public static String toHexString(byte[] bArr, int i, int i2) {
        Objects.requireNonNull(bArr, "bytes is null");
        if (i < 0 || i + i2 > bArr.length) {
            throw new IndexOutOfBoundsException();
        }
        int i3 = i2 * 2;
        char[] cArr = new char[i3];
        int i4 = 0;
        for (int i5 = 0; i5 < i2; i5++) {
            int i6 = bArr[i5 + i] & UByte.MAX_VALUE;
            int i7 = i4 + 1;
            char[] cArr2 = HEX_CHARS;
            cArr[i4] = cArr2[i6 >> 4];
            i4 = i7 + 1;
            cArr[i7] = cArr2[i6 & 15];
        }
        return new String(cArr, 0, i3);
    }
}