Support ijk artwork

pull/137/head
FongMi 3 years ago
parent cb3a9809ee
commit 41adaed144
  1. 2
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  2. 6
      app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java
  3. BIN
      app/src/main/res/drawable-nodpi/radio.webp
  4. 1
      app/src/main/res/values/styles.xml
  5. 33
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java
  6. 7
      ijkplayer/src/main/res/layout/ijk_player_view.xml

@ -450,7 +450,7 @@ public class Vod {
if (this == obj) return true;
if (!(obj instanceof Episode)) return false;
Episode it = (Episode) obj;
return (!TextUtils.isEmpty(getUrl()) && !TextUtils.isEmpty(it.getUrl()) && getUrl().equals(it.getUrl())) || (!TextUtils.isEmpty(getName()) && !TextUtils.isEmpty(it.getName()) && getName().equals(it.getName()));
return getUrl().equals(it.getUrl()) && getName().equals(it.getName());
}
static class Sorter implements Comparator<Episode> {

@ -4,6 +4,7 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
@ -16,6 +17,7 @@ import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.LazyHeaders;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.signature.ObjectKey;
import com.fongmi.android.tv.App;
@ -35,6 +37,10 @@ public class ImgUtil {
load(url, view, ImageView.ScaleType.CENTER);
}
public static void load(String url, CustomTarget<Drawable> target) {
if (!TextUtils.isEmpty(url)) Glide.with(App.get()).load(checkUrl(url)).dontAnimate().into(target);
}
public static void load(String url, ImageView view, ImageView.ScaleType scaleType) {
view.setScaleType(scaleType);
if (TextUtils.isEmpty(url)) view.setImageResource(R.drawable.ic_img_error);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

@ -19,7 +19,6 @@
<item name="use_artwork">true</item>
<item name="use_controller">false</item>
<item name="animation_enabled">false</item>
<item name="default_artwork">@drawable/radio</item>
</style>
<style name="Player.Vod">

@ -2,6 +2,7 @@ package tv.danmaku.ijk.media.player.ui;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
@ -10,9 +11,11 @@ import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.MediaController;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.List;
import java.util.Map;
@ -72,6 +75,8 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
private final SubtitleView mSubtitleView;
private final AudioManager mAudioManager;
private final FrameLayout mContentFrame;
private final ImageView mArtworkView;
private Drawable mDefaultArtwork;
private IMediaPlayer mPlayer;
public IjkVideoView(Context context) {
@ -89,6 +94,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
if (attrs != null) initAttr(context, attrs, defStyleAttr);
mContentFrame = findViewById(R.id.ijk_content_frame);
mSubtitleView = findViewById(R.id.ijk_subtitle);
mArtworkView = findViewById(R.id.ijk_artwork);
mCurrentPlayer = PLAYER_NONE;
mCurrentState = STATE_IDLE;
mTargetState = STATE_IDLE;
@ -392,6 +398,32 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
}
}
public void setDefaultArtwork(@Nullable Drawable defaultArtwork) {
if (this.mDefaultArtwork != defaultArtwork) {
this.mDefaultArtwork = defaultArtwork;
updateForCurrentTrackSelections();
}
}
private void updateForCurrentTrackSelections() {
if (mPlayer == null || mPlayer.getTrackInfo().isEmpty()) return;
int select = getSelectedTrack(ITrackInfo.MEDIA_TRACK_TYPE_VIDEO);
if (select >= 0) {
mArtworkView.setVisibility(GONE);
} else {
setDrawableArtwork(mDefaultArtwork);
}
}
private void setDrawableArtwork(Drawable drawable) {
if (drawable == null) return;
int drawableWidth = drawable.getIntrinsicWidth();
int drawableHeight = drawable.getIntrinsicHeight();
if (drawableWidth == 0 || drawableHeight == 0) return;
mArtworkView.setImageDrawable(drawable);
mArtworkView.setVisibility(VISIBLE);
}
private void setOptions(Uri uri) {
String url = uri.toString();
mPlayer.setOption(codec, "skip_loop_filter", 48);
@ -444,6 +476,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
public void onPrepared(IMediaPlayer mp) {
setPreferredTextLanguage();
mCurrentState = STATE_PREPARED;
updateForCurrentTrackSelections();
if (mCurrentSpeed > 0) setSpeed(mCurrentSpeed);
if (mStartPosition > 0) seekTo(mStartPosition);
mListener.onPrepared(mPlayer);

@ -8,6 +8,13 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/ijk_artwork"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:visibility="gone" />
<tv.danmaku.ijk.media.player.ui.SubtitleView
android:id="@+id/ijk_subtitle"
android:layout_width="match_parent"

Loading…
Cancel
Save