Merge branch 'dev' into release

pull/137/head
FongMi 4 years ago
commit 323c61ce67
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 56
      app/src/main/java/com/fongmi/android/tv/api/SoLoader.java
  3. 19
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  4. 5
      app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java
  5. 1
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java
  6. 23
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java

@ -17,6 +17,7 @@ import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.api.LiveConfig;
import com.fongmi.android.tv.api.SoLoader;
import com.fongmi.android.tv.api.WallConfig;
import com.fongmi.android.tv.bean.Func;
import com.fongmi.android.tv.bean.History;
@ -72,6 +73,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
ApiConfig.get().init().load(getCallback());
mBinding.progressLayout.showProgress();
Updater.create(this).start();
SoLoader.get().load();
Server.get().start();
setRecyclerView();
setViewModel();

@ -0,0 +1,56 @@
package com.fongmi.android.tv.api;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.net.OKHttp;
import com.fongmi.android.tv.utils.FileUtil;
import java.io.File;
import java.io.IOException;
public class SoLoader {
private static final int exoVer = 1;
private static final int ijkVer = 1;
private static final String url = "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/TV/release/other/";
private static final String exo = "libexo-" + exoVer + ".so";
private static final String ijk = "libijk-" + ijkVer + ".so";
private static class Loader {
static volatile SoLoader INSTANCE = new SoLoader();
}
public static SoLoader get() {
return Loader.INSTANCE;
}
public void load() {
App.execute(() -> {
checkSo(exo);
checkSo(ijk);
});
}
private void checkSo(String name) {
try {
File file = new File(FileUtil.getLibDir(), name);
if (!file.exists()) download(file, name);
System.load(file.getAbsolutePath());
} catch (Exception ignored) {
}
}
private void download(File file, String name) throws IOException {
remove(name.split("-")[0]);
FileUtil.write(file, OKHttp.newCall(url + name).execute().body().bytes());
}
private void remove(String name) {
File directory = FileUtil.getLibDir();
for (File file : directory.listFiles()) {
if (file.getName().contains(name)) {
file.delete();
}
}
}
}

@ -256,21 +256,17 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM
private void setMediaSource(Result result) {
SpiderDebug.log(errorCode + "," + result.getUrl() + "," + result.getHeaders());
if (isIjk()) ijkPlayer.setMediaSource(result.getPlayUrl() + result.getUrl(), result.getHeaders());
else if (isExo()) {
exoPlayer.setMediaSource(ExoUtil.getSource(result, errorCode));
exoPlayer.prepare();
PlayerEvent.state(0);
}
if (isExo()) exoPlayer.setMediaSource(ExoUtil.getSource(result, errorCode));
if (isExo()) exoPlayer.prepare();
PlayerEvent.state(0);
}
private void setMediaSource(Map<String, String> headers, String url) {
SpiderDebug.log(errorCode + "," + url + "," + headers);
if (isIjk()) ijkPlayer.setMediaSource(url, headers);
else if (isExo()) {
exoPlayer.setMediaSource(ExoUtil.getSource(headers, url, errorCode));
exoPlayer.prepare();
PlayerEvent.state(0);
}
if (isExo()) exoPlayer.setMediaSource(ExoUtil.getSource(headers, url, errorCode));
if (isExo()) exoPlayer.prepare();
PlayerEvent.state(0);
}
@Override
@ -303,9 +299,6 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM
@Override
public boolean onInfo(IMediaPlayer mp, int what, int extra) {
switch (what) {
case IMediaPlayer.MEDIA_INFO_AUDIO_DECODED_START:
PlayerEvent.state(0);
return true;
case IMediaPlayer.MEDIA_INFO_BUFFERING_START:
PlayerEvent.state(Player.STATE_BUFFERING);
return true;

@ -1,5 +1,6 @@
package com.fongmi.android.tv.utils;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
@ -30,6 +31,10 @@ public class FileUtil {
return Environment.getExternalStorageDirectory().getAbsolutePath();
}
public static File getLibDir() {
return App.get().getDir("libs", Context.MODE_PRIVATE);
}
public static File getCacheDir() {
return App.get().getCacheDir();
}

@ -185,7 +185,6 @@ public final class IjkMediaPlayer extends AbstractMediaPlayer {
synchronized (IjkMediaPlayer.class) {
if (!mIsLibLoaded) {
if (libLoader == null) libLoader = sLocalLibLoader;
libLoader.loadLibrary("ijkffmpeg");
libLoader.loadLibrary("ijksdl");
libLoader.loadLibrary("player");
mIsLibLoaded = true;

@ -50,6 +50,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
private float mCurrentSpeed = 1;
private int mCurrentAspectRatio;
private int mCurrentRender;
private int mStartPosition;
private int mCurrentState = STATE_IDLE;
private int mTargetState = STATE_IDLE;
@ -266,9 +267,15 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
if (mOnInfoListener != null) {
mOnInfoListener.onInfo(mp, what, extra);
}
if (what == IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED) {
mVideoRotationDegree = extra;
if (mRenderView != null) mRenderView.setVideoRotation(extra);
switch (what) {
case IMediaPlayer.MEDIA_INFO_AUDIO_DECODED_START:
if (mStartPosition > 0) seekTo(mStartPosition);
mStartPosition = 0;
break;
case IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED:
mVideoRotationDegree = extra;
if (mRenderView != null) mRenderView.setVideoRotation(extra);
break;
}
return true;
}
@ -420,14 +427,16 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
}
@Override
public void seekTo(int msec) {
public void seekTo(int positionMs) {
if (!isInPlaybackState()) return;
mInfoListener.onInfo(mIjkPlayer, IMediaPlayer.MEDIA_INFO_BUFFERING_START, 0);
mIjkPlayer.seekTo(msec);
mIjkPlayer.seekTo(positionMs);
mStartPosition = 0;
}
public void seekTo(long msec) {
seekTo((int) msec);
public void seekTo(long positionMs) {
mStartPosition = (int) positionMs;
seekTo(mStartPosition);
}
public void setSpeed(float speed) {

Loading…
Cancel
Save