Give up so load

pull/123/head
FongMi 3 years ago
parent e5b13c7ffb
commit 57b1cd6454
  1. 14
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  3. 14
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  4. 66
      app/src/main/java/com/fongmi/android/tv/api/SoLoader.java
  5. 21
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  6. 1
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/IjkMediaPlayer.java

@ -21,7 +21,6 @@ import androidx.viewbinding.ViewBinding;
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.SoLoader;
import com.fongmi.android.tv.bean.History;
import com.fongmi.android.tv.bean.Keep;
import com.fongmi.android.tv.bean.Parse;
@ -475,24 +474,15 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
}
private void onPlayer() {
if (SoLoader.isFail()) return;
int index = Prefers.getPlayer();
CharSequence[] array = ResUtil.getStringArray(R.array.select_player);
Prefers.putPlayer(index = index == 0 ? 1 : 0);
mBinding.control.tracks.setVisibility(View.GONE);
mBinding.control.player.setText(array[index]);
mBinding.control.player.setText(mPlayers.togglePlayer());
App.post(() -> getPlayer(false), 250);
mPlayers.toggle();
setPlayerView();
}
private void onDecode() {
if (mPlayers.isExo()) return;
int index = Prefers.getDecode();
CharSequence[] array = ResUtil.getStringArray(R.array.select_decode);
Prefers.putDecode(index = index == 0 ? 1 : 0);
mBinding.control.decode.setText(array[index]);
mPlayers.setDecode(index);
mBinding.control.decode.setText(mPlayers.toggleDecode());
getPlayer(false);
}

@ -17,7 +17,6 @@ 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;
@ -73,7 +72,6 @@ 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();

@ -17,7 +17,6 @@ import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.api.LiveConfig;
import com.fongmi.android.tv.api.SoLoader;
import com.fongmi.android.tv.bean.Channel;
import com.fongmi.android.tv.bean.Epg;
import com.fongmi.android.tv.bean.Group;
@ -275,24 +274,15 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
}
private void onPlayer() {
if (SoLoader.isFail()) return;
int index = Prefers.getPlayer();
CharSequence[] array = ResUtil.getStringArray(R.array.select_player);
Prefers.putPlayer(index = index == 0 ? 1 : 0);
mBinding.control.tracks.setVisibility(View.GONE);
mBinding.control.player.setText(array[index]);
mBinding.control.player.setText(mPlayers.togglePlayer());
App.post(this::getUrl, 250);
mPlayers.toggle();
setPlayerView();
}
private void onDecode() {
if (mPlayers.isExo()) return;
int index = Prefers.getDecode();
CharSequence[] array = ResUtil.getStringArray(R.array.select_decode);
Prefers.putDecode(index = index == 0 ? 1 : 0);
mBinding.control.decode.setText(array[index]);
mPlayers.setDecode(index);
mBinding.control.decode.setText(mPlayers.toggleDecode());
getUrl();
}

@ -1,66 +0,0 @@
package com.fongmi.android.tv.api;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.net.OKHttp;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import java.io.File;
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 boolean fail;
private static class Loader {
static volatile SoLoader INSTANCE = new SoLoader();
}
public static SoLoader get() {
return Loader.INSTANCE;
}
public static boolean isFail() {
return get().fail;
}
public void load() {
new Thread(() -> checkSo(exo)).start();
new Thread(() -> checkSo(ijk)).start();
}
private void checkSo(String name) {
try {
File file = new File(FileUtil.getLibDir(), name);
if (!file.exists() || file.length() < 1000) download(name, file);
if (file.length() < 1000) throw new Throwable();
System.load(file.getAbsolutePath());
} catch (Throwable e) {
App.post(() -> Notify.show(R.string.error_so_load));
Prefers.putPlayer(0);
fail = true;
}
}
private void download(String name, File file) throws Throwable {
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();
}
}
}
}

@ -144,6 +144,19 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM
return getSpeedText();
}
public String togglePlayer() {
stop();
int index = Prefers.getPlayer();
Prefers.putPlayer(index = index == 0 ? 1 : 0);
return ResUtil.getStringArray(R.array.select_player)[index].toString();
}
public String toggleDecode() {
int index = Prefers.getDecode();
setDecode(index = index == 0 ? 1 : 0);
return ResUtil.getStringArray(R.array.select_decode)[index].toString();
}
public String getPositionTime(long time) {
time = getPosition() + time;
if (time > getDuration()) time = getDuration();
@ -158,7 +171,8 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM
}
public void setDecode(int decode) {
if (isIjk()) ijkPlayer.setDecode(decode);
ijkPlayer.setDecode(decode);
Prefers.putDecode(decode);
}
public void seekTo(int time) {
@ -189,11 +203,6 @@ public class Players implements Player.Listener, IMediaPlayer.OnInfoListener, IM
else if (isIjk()) stopIjk();
}
public void toggle() {
if (isExo()) stopIjk();
else if (isIjk()) stopExo();
}
public void release() {
stopParse();
if (isExo()) releaseExo();

@ -180,6 +180,7 @@ 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;

Loading…
Cancel
Save