Optimize mitv

pull/123/head
FongMi 3 years ago
parent 70c46cc465
commit 7ad4dec02b
  1. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  2. 2
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  3. 38
      app/src/main/java/com/fongmi/android/tv/player/source/Force.java
  4. 4
      app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java
  5. 6
      forcetech/src/main/java/com/anymediacloud/iptv/standard/ForceTV.java
  6. 45
      forcetech/src/main/java/com/gsoft/mitv/MainActivity.java

@ -279,7 +279,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
if (item.getUrls().size() == 1) return;
mBinding.info.getRoot().setVisibility(View.VISIBLE);
mBinding.info.line.setText(item.getLineText());
getUrl(item);
getUrl(mChannel = item);
}
@Override
@ -288,7 +288,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
if (item.getUrls().size() == 1) return;
mBinding.info.getRoot().setVisibility(View.VISIBLE);
mBinding.info.line.setText(item.getLineText());
getUrl(item);
getUrl(mChannel = item);
}
@Override
@ -359,7 +359,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
protected void onDestroy() {
super.onDestroy();
mPlayers.release();
Force.get().destroy();
Force.get().stop();
mGroup.setSelected(false);
mChannel.setSelected(false);
EventBus.getDefault().unregister(this);

@ -84,7 +84,7 @@ public class ExoUtil {
}
private static synchronized Cache getCache() {
if (cache == null) cache = new SimpleCache(FileUtil.getCacheDir(), new NoOpCacheEvictor(), getDatabase());
if (cache == null) cache = new SimpleCache(FileUtil.getCacheDir("player"), new NoOpCacheEvictor(), getDatabase());
return cache;
}
}

@ -6,12 +6,16 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.net.Uri;
import android.os.IBinder;
import android.os.SystemClock;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.net.OKHttp;
import com.fongmi.android.tv.utils.FileUtil;
import com.forcetech.Port;
import com.gsoft.mitv.MainActivity;
import java.io.File;
import okhttp3.Headers;
public class Force {
@ -26,22 +30,25 @@ public class Force {
return Loader.INSTANCE;
}
private void init() {
App.get().bindService(new Intent(App.get(), MainActivity.class), mConn, Context.BIND_AUTO_CREATE);
init = true;
private void init() throws Exception {
check();
start();
}
public void destroy() {
try {
if (init) App.get().unbindService(mConn);
} catch (Exception e) {
e.printStackTrace();
}
private void check() throws Exception {
File file = FileUtil.getCacheFile("libmitv.so");
String url = "https://ghproxy.com/https://raw.githubusercontent.com/FongMi/TV/dev/release/libmitv.so";
if (!file.exists()) FileUtil.write(file, OKHttp.newCall(url).execute().body().bytes());
}
private void start() {
App.get().bindService(new Intent(App.get(), MainActivity.class), mConn, Context.BIND_AUTO_CREATE);
}
public String fetch(String url) {
try {
if (!init) init();
while (!init) SystemClock.sleep(10);
int port = Port.get(url);
Uri uri = Uri.parse(url);
String id = uri.getLastPathSegment();
@ -55,15 +62,24 @@ public class Force {
}
}
public void stop() {
try {
if (init) App.get().unbindService(mConn);
init = false;
} catch (Exception e) {
e.printStackTrace();
}
}
private final ServiceConnection mConn = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
init = true;
}
@Override
public void onServiceDisconnected(ComponentName name) {
init = false;
}
};
}

@ -31,6 +31,10 @@ public class FileUtil {
return App.get().getCacheDir();
}
public static File getCacheDir(String folder) {
return new File(getCachePath() + "/" + folder);
}
public static String getCachePath() {
return getCacheDir().getAbsolutePath();
}

@ -1,13 +1,7 @@
package com.anymediacloud.iptv.standard;
import com.gsoft.mitv.MainActivity;
public class ForceTV {
static {
MainActivity.start();
}
public void start(int port) {
try {
start(port, 20971520);

@ -2,45 +2,39 @@ package com.gsoft.mitv;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import com.anymediacloud.iptv.standard.ForceTV;
import com.forcetech.Port;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.lang.ref.WeakReference;
public class MainActivity extends Service {
private static WeakReference<MainActivity> ref;
private final IBinder binder = new LocalBinder();
private ForceTV forceTV;
static {
System.loadLibrary("mitv");
public class LocalBinder extends Binder {
MainActivity getService() {
// Return this instance of LocalService so clients can call public methods
return MainActivity.this;
}
}
private native void loadLibrary(int i);
public static void start() {
ref.get().loadLibrary(1);
static {
System.loadLibrary("mitv");
}
@Override
public void onCreate() {
super.onCreate();
ref = new WeakReference<>(this);
try {
loadAsset();
} catch (Throwable ignored) {
}
loadLibrary(1);
}
@Override
public IBinder onBind(Intent intent) {
forceTV = new ForceTV();
forceTV.start(Port.MTV);
return null;
return binder;
}
@Override
@ -49,20 +43,5 @@ public class MainActivity extends Service {
return super.onUnbind(intent);
}
private void loadAsset() throws Throwable {
InputStream is = getAssets().open("libmitv.so");
FileOutputStream fos = new FileOutputStream(getCacheDir() + "/libmitv.so");
byte[] bytes = new byte[1024];
while (true) {
int read = is.read(bytes);
if (read != -1) {
fos.write(bytes, 0, read);
} else {
is.close();
fos.flush();
fos.close();
return;
}
}
}
private native void loadLibrary(int type);
}

Loading…
Cancel
Save