初始化橘视厅酒店版Android项目

This commit is contained in:
freeboss
2026-07-26 12:43:59 +08:00
commit e1a088ef8e
442 changed files with 68672 additions and 0 deletions

View File

@@ -0,0 +1,398 @@
package com.pukka.videoplayertv;
import android.content.Context;
import android.net.Uri;
import android.view.Surface;
import android.view.SurfaceHolder;
import java.io.FileDescriptor;
import java.io.IOException;
import java.util.Map;
import tv.danmaku.ijk.media.bmiptvplayer.HyMediaPlayer;
import tv.danmaku.ijk.media.bmiptvplayer.IMediaPlayer;
/**
* Author: xjy
* Date: 2022/11/23 14:12
* Description: 软终端播放器
*/
public class SoftMediaPlayer extends AbstractMediaPlayer {
private static final String TAG = "SoftMediaPlayer";
//软终端播放器
private final HyMediaPlayer mHyMediaPlayer;
private final Object mInitLock = new Object();
//是否销毁
private boolean mIsReleased;
/**
*初始化
* */
public SoftMediaPlayer(Context context) {
synchronized (mInitLock) {
mHyMediaPlayer = new HyMediaPlayer(context);
initLister();
}
}
/**
*初始化
* */
public SoftMediaPlayer(Context context, int playerType){
synchronized (mInitLock) {
mHyMediaPlayer = new HyMediaPlayer(context,playerType);
initLister();
}
}
/**
* 设置SurfaceHolder
* */
@Override
public void setDisplay(SurfaceHolder sh) {
if(null !=mHyMediaPlayer) {
if(!mIsReleased) {
mHyMediaPlayer.setDisplay(sh);
}
}
}
/**
* 设置视频源
* */
@Override
public void setDataSource(Context context, Uri uri) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setDataSource(context,uri);
}
}
/**
* 设置视频源
* */
@Override
public void setDataSource(Context context, Uri uri, Map<String, String> headers) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setDataSource(context,uri,headers);
}
}
/**
* 设置视频源
* */
@Override
public void setDataSource(FileDescriptor fd) throws IOException, IllegalArgumentException, IllegalStateException {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setDataSource(fd);
}
}
/**
* 设置视频源
* */
@Override
public void setDataSource(String path) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setDataSource(path);
}
}
/**
* 获取视频源
* */
@Override
public String getDataSource() {
if(null != mHyMediaPlayer){
return mHyMediaPlayer.getDataSource();
}
return null;
}
/**
* 开始准备
* */
@Override
public void prepareAsync() throws IllegalStateException {
if(null != mHyMediaPlayer){
mHyMediaPlayer.prepareAsync();
}
}
/**
* 播放
* */
@Override
public void start() throws IllegalStateException {
if(null != mHyMediaPlayer){
mHyMediaPlayer.start();
}
}
/**
* 停止
* */
@Override
public void stop() throws IllegalStateException {
if(null != mHyMediaPlayer){
mHyMediaPlayer.stop();
}
}
/**
* 暂停
* */
@Override
public void pause() throws IllegalStateException {
if(null != mHyMediaPlayer){
mHyMediaPlayer.pause();
}
}
@Override
public void setScreenOnWhilePlaying(boolean screenOn) {
if(null!= mHyMediaPlayer){
mHyMediaPlayer.setScreenOnWhilePlaying(screenOn);
}
}
@Override
public int getVideoWidth() {
if(null != mHyMediaPlayer) {
return mHyMediaPlayer.getVideoWidth();
}
return 0;
}
@Override
public int getVideoHeight() {
if(null != mHyMediaPlayer) {
return mHyMediaPlayer.getVideoHeight();
}
return 0;
}
/**
* 是否在播放
* */
@Override
public boolean isPlaying() {
if(null != mHyMediaPlayer) {
return mHyMediaPlayer.isPlaying();
}
return false;
}
/**
* 定点播放
* */
@Override
public void seekTo(long msec) throws IllegalStateException {
if(null != mHyMediaPlayer) {
mHyMediaPlayer.seekTo(msec);
}
}
/**
* 当前Position
* */
@Override
public long getCurrentPosition() {
if(null != mHyMediaPlayer){
return mHyMediaPlayer.getCurrentPosition();
}
return 0;
}
/**
* 获取Duration
* */
@Override
public long getDuration() {
if(null != mHyMediaPlayer){
return mHyMediaPlayer.getDuration();
}
return 0;
}
/**
* 销毁播放器
* */
@Override
public void release() {
if(null != mHyMediaPlayer){
mIsReleased = true;
mHyMediaPlayer.release();
resetListeners();
}
}
/**
* 复位
* */
@Override
public void reset() {
if(null != mHyMediaPlayer){
mHyMediaPlayer.reset();
resetListeners();
}
}
@Override
public void setSpeed(float speed) {
}
@Override
public float getSpeed() {
return 0;
}
/**
* 设置声音
* */
@Override
public void setVolume(float leftVolume, float rightVolume) {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setVolume(leftVolume, rightVolume);
}
}
@Override
public int getAudioSessionId() {
if(null != mHyMediaPlayer){
mHyMediaPlayer.getAudioSessionId();
}
return 0;
}
@Override
public MediaInfo getMediaInfo() {
if(null != mHyMediaPlayer){
mHyMediaPlayer.getMediaInfo();
}
return null;
}
public void setLogEnabled(boolean enable) {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setLogEnabled(enable);
}
}
@Override
public boolean isPlayable() {
if(null != mHyMediaPlayer){
return mHyMediaPlayer.isPlayable();
}
return false;
}
@Override
public void setAudioStreamType(int streamtype) {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setAudioStreamType(streamtype);
}
}
@Override
public void setKeepInBackground(boolean keepInBackground) {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setKeepInBackground(keepInBackground);
}
}
@Override
public int getVideoSarNum() {
if(null != mHyMediaPlayer){
return mHyMediaPlayer.getVideoSarNum();
}
return 0;
}
@Override
public int getVideoSarDen() {
if(null != mHyMediaPlayer){
return mHyMediaPlayer.getVideoSarDen();
}
return 0;
}
@Override
public void setWakeMode(Context context, int mode) {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setWakeMode(context,mode);
}
}
@Override
public void setLooping(boolean looping) {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setLooping(looping);
}
}
@Override
public boolean isLooping() {
if(null != mHyMediaPlayer){
return mHyMediaPlayer.isLooping();
}
return false;
}
@Override
public ITrackInfo[] getTrackInfo() {
return null;
}
/**
* 设置Surface
* */
@Override
public void setSurface(Surface surface) {
if(null != mHyMediaPlayer){
mHyMediaPlayer.setSurface(surface);
}
}
@Override
public int getBufferPercentage() {
return 0;
}
/**
* 播放器回调
* onInfo onBufferingUpdate onCompletion onError onPrepared onSeekComplete onVideoSizeChanged
* */
private void initLister(){
if(null == mHyMediaPlayer){
return;
}
mHyMediaPlayer.setOnInfoListener(new IMediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(IMediaPlayer iMediaPlayer, int i, int i1) {
// TODO: 2023/4/2 放开会报错。。不知道为什么
notifyOnInfo(i,i1);
return false;
}
});
mHyMediaPlayer.setOnBufferingUpdateListener(new IMediaPlayer.OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(IMediaPlayer iMediaPlayer, int i) {
notifyOnBufferingUpdate(i);
}
});
mHyMediaPlayer.setOnCompletionListener(new IMediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(IMediaPlayer iMediaPlayer) {
notifyOnCompletion();
}
});
mHyMediaPlayer.setOnErrorListener(new IMediaPlayer.OnErrorListener() {
@Override
public boolean onError(IMediaPlayer iMediaPlayer, int i, int i1) {
notifyOnError(i,i1);
return false;
}
});
mHyMediaPlayer.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(IMediaPlayer iMediaPlayer) {
notifyOnPrepared();
}
});
mHyMediaPlayer.setOnSeekCompleteListener(new IMediaPlayer.OnSeekCompleteListener() {
@Override
public void onSeekComplete(IMediaPlayer iMediaPlayer) {
notifyOnSeekComplete();
}
});
mHyMediaPlayer.setOnVideoSizeChangedListener(new IMediaPlayer.OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(IMediaPlayer iMediaPlayer, int i, int i1, int i2, int i3) {
notifyOnVideoSizeChanged(i,i1,i2,i3);
}
});
}
}