|
|
|
|
@ -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); |
|
|
|
|
|