Merge branch 'dev' into release

pull/237/head
okjack 2 years ago
commit 2df7acc179
  1. 2
      app/build.gradle
  2. 37
      app/src/leanback/java/com/fongmi/android/tv/receiver/BootReceiver.java
  3. 17
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 55
      app/src/leanback/res/layout/activity_video.xml
  5. 2
      app/src/main/java/com/fongmi/android/tv/Setting.java
  6. 4
      app/src/main/java/com/fongmi/android/tv/api/LiveParser.java
  7. 2
      app/src/main/java/com/fongmi/android/tv/server/process/Action.java
  8. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  9. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  10. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/CastDialog.java
  11. 9
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/InfoDialog.java
  12. 8
      app/src/mobile/res/layout/dialog_info.xml

@ -11,7 +11,7 @@ android {
minSdk 21
targetSdk 28
versionCode 222
versionName "0118"
versionName "2.2.3"
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]

@ -3,6 +3,13 @@ package com.fongmi.android.tv.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.os.Build;
import androidx.annotation.NonNull;
import com.android.cast.dlna.dmr.DLNARendererService;
import com.fongmi.android.tv.App;
@ -13,7 +20,33 @@ public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
DLNARendererService.Companion.start(App.get(), R.drawable.ic_logo);
LiveConfig.get().init().load();
registerCallback();
}
private void registerCallback() {
ConnectivityManager manager = (ConnectivityManager) App.get().getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) manager.registerDefaultNetworkCallback(new Callback());
else manager.registerNetworkCallback(new NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(), new Callback());
}
static class Callback extends ConnectivityManager.NetworkCallback {
private boolean first;
@Override
public void onAvailable(@NonNull Network network) {
if (first) doJob();
else first = true;
}
@Override
public void onLost(@NonNull Network network) {
}
private void doJob() {
LiveConfig.get().init().load();
DLNARendererService.Companion.start(App.get(), R.drawable.ic_logo);
((ConnectivityManager) App.get().getSystemService(Context.CONNECTIVITY_SERVICE)).unregisterNetworkCallback(this);
}
}
}

@ -614,11 +614,15 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setEpisodeView(List<Episode> items) {
int size = items.size();
for (int i = 0; i < size; i++) items.get(i).setIndex(i);
int episodeNameLength = items.isEmpty() ? 0 : items.get(0).getName().length();
for (int i = 0; i < size; i++) {
items.get(i).setIndex(i);
int length = items.get(i).getName() == null ? 0 : items.get(i).getName().length();
if (length > episodeNameLength) episodeNameLength = length;
}
int numColumns = 10;
if (episodeNameLength > 40) numColumns = 2;
else if (episodeNameLength > 20) numColumns = 3;
if (episodeNameLength > 30) numColumns = 2;
else if (episodeNameLength > 15) numColumns = 3;
else if (episodeNameLength > 10) numColumns = 4;
else if (episodeNameLength > 6) numColumns = 6;
else if (episodeNameLength > 2) numColumns = 8;
@ -626,7 +630,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
int width = ResUtil.getScreenWidth() - ResUtil.dp2px(48);
ViewGroup.LayoutParams params = mBinding.episodeVert.getLayoutParams();
params.width = ResUtil.getScreenWidth();
params.height = rowNum > 6 ? ResUtil.dp2px(300) : ResUtil.dp2px(rowNum * 50);
params.height = rowNum > 6 ? ResUtil.dp2px(300) : ResUtil.dp2px(rowNum * 44);
mBinding.episodeVert.setNumColumns(numColumns);
mBinding.episodeVert.setColumnWidth((width - ((numColumns - 1) * ResUtil.dp2px(8))) / numColumns);
mBinding.episodeVert.setLayoutParams(params);
@ -1507,6 +1511,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (!isFullscreen() && KeyUtil.isBackKey(event) && getFocus1() != mBinding.video) {
mBinding.video.requestFocus();
mFocus1 = null;
return true;
}
if (isFullscreen() && KeyUtil.isMenuKey(event)) onToggle();
if (isVisible(mBinding.control.getRoot())) setR1Callback();
if (isVisible(mBinding.control.getRoot())) mFocus2 = getCurrentFocus();

@ -250,12 +250,24 @@
</LinearLayout>
<com.fongmi.android.tv.ui.custom.CustomHorizontalGridView
android:id="@+id/flag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/video"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:paddingStart="24dp"
android:paddingEnd="24dp"
android:visibility="gone" />
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/video"
android:layout_marginTop="16dp"
android:layout_below="@+id/flag"
android:overScrollMode="never">
<LinearLayout
@ -263,28 +275,15 @@
android:layout_height="match_parent"
android:orientation="vertical">
<com.fongmi.android.tv.ui.custom.CustomHorizontalGridView
android:id="@+id/flag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingStart="24dp"
android:paddingTop="8dp"
android:paddingEnd="24dp"
android:paddingBottom="8dp"
android:visibility="gone" />
<com.fongmi.android.tv.ui.custom.CustomHorizontalGridView
android:id="@+id/quality"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_marginBottom="12dp"
android:paddingStart="24dp"
android:paddingTop="8dp"
android:paddingEnd="24dp"
android:paddingBottom="8dp"
android:visibility="gone" />
<com.fongmi.android.tv.ui.custom.CustomHorizontalGridView
@ -293,10 +292,12 @@
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_marginBottom="12dp"
android:paddingStart="24dp"
android:paddingTop="8dp"
android:paddingEnd="24dp"
android:paddingBottom="8dp"
android:focusable="false"
app:focusOutEnd="true"
app:focusOutFront="true"
android:visibility="gone" />
<com.fongmi.android.tv.ui.custom.CustomHorizontalGridView
@ -305,10 +306,9 @@
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_marginBottom="12dp"
android:paddingStart="24dp"
android:paddingTop="8dp"
android:paddingEnd="24dp"
android:paddingBottom="8dp"
android:visibility="gone" />
<androidx.leanback.widget.VerticalGridView
@ -317,13 +317,13 @@
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_marginBottom="12dp"
android:paddingStart="24dp"
android:paddingTop="8dp"
android:paddingEnd="24dp"
android:paddingBottom="8dp"
android:visibility="gone"
android:focusable="false"
app:focusOutEnd="true"
app:focusOutFront="true" />
app:focusOutFront="true"
android:visibility="gone" />
<com.fongmi.android.tv.ui.custom.CustomHorizontalGridView
android:id="@+id/part"
@ -331,23 +331,20 @@
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:layout_marginBottom="12dp"
android:paddingStart="24dp"
android:paddingTop="8dp"
android:paddingEnd="24dp"
android:paddingBottom="8dp"
android:visibility="gone" />
<androidx.leanback.widget.HorizontalGridView
android:id="@+id/quick"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginBottom="12dp"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingStart="24dp"
android:paddingTop="8dp"
android:paddingEnd="24dp"
android:paddingBottom="8dp"
android:visibility="gone" />
</LinearLayout>

@ -322,7 +322,7 @@ public class Setting {
}
public static boolean isBackgroundOn() {
return getBackground() == 1;
return getBackground() == 1 || getBackground() == 2;
}
public static boolean isBackgroundPiP() {

@ -69,7 +69,7 @@ public class LiveParser {
if (setting.find(line)) {
setting.check(line);
} else if (line.startsWith("#EXTINF:")) {
Group group = live.find(Group.create(extract(line, GROUP)));
Group group = live.find(Group.create(extract(line, GROUP), live.isPass()));
channel = group.find(Channel.create(extract(line, NAME)));
channel.setLogo(extract(line, LOGO));
} else if (!line.startsWith("#") && line.contains("://")) {
@ -102,7 +102,7 @@ public class LiveParser {
private static void proxy(Live live, String text) {
int number = 0;
for (Live item : Live.arrayFrom(text)) {
Group group = live.find(Group.create(item.getGroup()));
Group group = live.find(Group.create(item.getGroup(), live.isPass()));
for (Channel channel : item.getChannels()) {
channel.setNumber(++number);
channel.live(live);

@ -190,7 +190,7 @@ public class Action implements Process {
List<Config> configs = Config.arrayFrom(params.get("configs"));
List<Keep> targets = Keep.arrayFrom(params.get("targets"));
boolean replace = Objects.equals(params.get("mode"), "1");
if (VodConfig.getUrl().isEmpty() && configs.size() > 0) {
if (TextUtils.isEmpty(VodConfig.getUrl()) && configs.size() > 0) {
VodConfig.load(Config.find(configs.get(0), 0), getCallback(configs, targets));
} else {
if (replace) Keep.deleteAll();

@ -1018,8 +1018,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
protected void onUserLeaveHint() {
super.onUserLeaveHint();
if (isRedirect()) return;
mPiP.enter(this, Setting.getLiveScale() == 2);
if (isLock()) App.post(this::onLock, 500);
if (mPlayers.haveTrack(C.TRACK_TYPE_VIDEO)) mPiP.enter(this, Setting.getLiveScale() == 2);
}
@Override

@ -709,7 +709,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void onInfo() {
InfoDialog.create(this).title(mBinding.control.title.getText()).headers(mPlayers.getHeaders()).vid(getId()).url(mPlayers.getUrl()).show();
InfoDialog.create(this).title(mBinding.control.title.getText()).headers(mPlayers.getHeaders()).url(mPlayers.getUrl()).show();
}
private void onFull() {
@ -1642,8 +1642,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
protected void onUserLeaveHint() {
super.onUserLeaveHint();
if (isRedirect()) return;
mPiP.enter(this, getScale() == 2);
if (isLock()) App.post(this::onLock, 500);
if (mPlayers.haveTrack(C.TRACK_TYPE_VIDEO)) mPiP.enter(this, getScale() == 2);
}
@Override

@ -69,8 +69,8 @@ public class CastDialog extends BaseDialog implements DeviceAdapter.OnClickListe
public CastDialog() {
client = OkHttp.client(Constant.TIMEOUT_SYNC);
body = new FormBody.Builder();
body.add("url", VodConfig.getUrl());
body.add("device", Device.get().toString());
if (VodConfig.getUrl() != null) body.add("url", VodConfig.getUrl());
}
public CastDialog history(History history) {

@ -22,7 +22,6 @@ public class InfoDialog {
private AlertDialog dialog;
private CharSequence title;
private String header;
private String vid;
private String url;
public static InfoDialog create(Activity activity) {
@ -46,11 +45,6 @@ public class InfoDialog {
return this;
}
public InfoDialog vid(String vid) {
this.vid = vid;
return this;
}
public InfoDialog url(String url) {
this.url = url;
return this;
@ -72,15 +66,12 @@ public class InfoDialog {
binding.url.setText(url);
binding.title.setText(title);
binding.header.setText(header);
if (!TextUtils.isEmpty(vid)) binding.vid.setText("id : ".concat(vid));
binding.vid.setVisibility(TextUtils.isEmpty(vid) ? View.GONE : View.VISIBLE);
binding.url.setVisibility(TextUtils.isEmpty(url) ? View.GONE : View.VISIBLE);
binding.header.setVisibility(TextUtils.isEmpty(header) ? View.GONE : View.VISIBLE);
}
private void initEvent() {
binding.url.setOnClickListener(this::onShare);
binding.vid.setOnLongClickListener(v -> onCopy(vid));
binding.url.setOnLongClickListener(v -> onCopy(url));
binding.header.setOnLongClickListener(v -> onCopy(header));
}

@ -20,14 +20,6 @@
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/vid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="?android:attr/textColorPrimary"
android:textSize="14sp" />
<TextView
android:id="@+id/header"
android:layout_width="match_parent"

Loading…
Cancel
Save