Merge pull request #580 from okcaptain/dev

Dev
okjack
okcaptain 2 years ago committed by GitHub
commit e5cfcaeb99
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      app/build.gradle
  2. 11
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
  3. 10
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 5
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/HistoryAdapter.java
  5. 8
      app/src/main/AndroidManifest.xml
  6. 4
      app/src/main/java/com/fongmi/android/tv/bean/Channel.java
  7. 1
      app/src/main/java/com/fongmi/android/tv/bean/Result.java
  8. 5
      app/src/main/java/com/fongmi/android/tv/impl/SessionCallback.java
  9. 2
      app/src/main/java/com/fongmi/android/tv/player/extractor/Youtube.java
  10. 17
      app/src/main/java/com/fongmi/android/tv/utils/Util.java
  11. 8
      app/src/mobile/AndroidManifest.xml
  12. 39
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  13. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/InfoDialog.java
  14. 2
      zlive/src/main/AndroidManifest.xml

@ -13,8 +13,8 @@ android {
minSdk 21
//noinspection ExpiredTargetSdkVersion
targetSdk 28
versionCode 253
versionName "2.5.3"
versionCode 258
versionName "2.5.8"
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]

@ -367,13 +367,12 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
onStopped();
}
private void onPaused(boolean visible) {
private void onPaused() {
mBinding.widget.exoDuration.setText(mPlayers.getDurationTime());
mBinding.widget.exoPosition.setText(mPlayers.getPositionTime(0));
setState(RenderState.PAUSED);
if (visible) showInfo();
else hideInfo();
mPlayers.pause();
showInfo();
}
private void onPlay() {
@ -441,7 +440,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
@Override
public void pause() {
App.post(() -> onPaused(true));
App.post(this::onPaused);
}
@Override
@ -506,7 +505,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
@Override
public void onKeyCenter() {
if (mPlayers.isPlaying()) onPaused(true);
if (mPlayers.isPlaying()) onPaused();
else onPlay();
hideControl();
}
@ -544,7 +543,7 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
@Override
protected void onPause() {
super.onPause();
onPaused(false);
mPlayers.pause();
mClock.stop();
}

@ -810,7 +810,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mBinding.display.clock.setVisibility(Setting.isDisplayTime() || isVisible(mBinding.widget.info) ? View.VISIBLE : View.GONE);
mBinding.display.titleLayout.setVisibility(Setting.isDisplayVideoTitle() && !isVisible(mBinding.control.getRoot()) ? View.VISIBLE : View.GONE);
mBinding.display.netspeed.setVisibility(Setting.isDisplaySpeed() && !isVisible(mBinding.control.getRoot()) && !hasDialog ? View.VISIBLE : View.GONE);
mBinding.display.duration.setVisibility(Setting.isDisplayDuration() && !isVisible(mBinding.control.getRoot()) && !hasDialog ? View.VISIBLE : View.GONE);
mBinding.display.duration.setVisibility(Setting.isDisplayDuration() && !isVisible(mBinding.control.getRoot()) && (mPlayers.isVod()) && !hasDialog ? View.VISIBLE : View.GONE);
mBinding.display.progress.setVisibility(Setting.isDisplayMiniProgress() && !isVisible(mBinding.control.getRoot()) && (mPlayers.isVod()) && !hasDialog ? View.VISIBLE : View.GONE);
}
@ -1580,11 +1580,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
getDetail(item);
}
private void onPaused(boolean visible) {
private void onPaused() {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
mBinding.widget.exoDuration.setText(mPlayers.getDurationTime());
mBinding.widget.exoPosition.setText(mPlayers.getPositionTime(0));
if (visible) showInfoAndCenter();
if (isFullscreen()) showInfoAndCenter();
else hideInfoAndCenter();
mPlayers.pause();
}
@ -1768,7 +1768,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
@Override
public void onKeyCenter() {
if (mPlayers.isPlaying()) {
onPaused(true);
onPaused();
hideControl(false);
} else {
onPlay();
@ -1826,7 +1826,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
protected void onPause() {
super.onPause();
setBackground(true);
onPaused(false);
mPlayers.pause();
mClock.stop();
}

@ -106,7 +106,10 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold
}
private void setFocusListener(AdapterVodBinding binding) {
binding.getRoot().setOnFocusChangeListener((v, hasFocus) -> binding.name.setSelected(hasFocus));
binding.getRoot().setOnFocusChangeListener((v, hasFocus) -> {
binding.name.setSelected(hasFocus);
binding.remark.setSelected(hasFocus);
});
}
private void setClickListener(View root, History item) {

@ -69,14 +69,6 @@
android:name=".ui.activity.CrashActivity"
android:process=":error_activity" />
<receiver
android:name="androidx.media.session.MediaButtonReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
<receiver
android:name=".receiver.ActionReceiver"
android:exported="false">

@ -336,8 +336,8 @@ public class Channel {
if (!live.getCatchup().isEmpty() && getCatchup().isEmpty()) setCatchup(live.getCatchup());
if (!live.getReferer().isEmpty() && getReferer().isEmpty()) setReferer(live.getReferer());
if (live.getPlayerType() != -1 && getPlayerType() == -1) setPlayerType(live.getPlayerType());
if (live.getEpg().contains("{") && !getEpg().isEmpty() && !getEpg().startsWith("http")) setEpg(live.getEpg().replace("{name}", getTvgName()).replace("{epg}", getEpg()));
if (live.getLogo().contains("{") && !getLogo().isEmpty() && !getLogo().startsWith("http")) setLogo(live.getLogo().replace("{name}", getTvgName()).replace("{logo}", getLogo()));
if (live.getEpg().contains("{") && !getEpg().startsWith("http")) setEpg(live.getEpg().replace("{name}", getTvgName()).replace("{epg}", getEpg()));
if (live.getLogo().contains("{") && !getLogo().startsWith("http")) setLogo(live.getLogo().replace("{name}", getTvgName()).replace("{logo}", getLogo()));
}
public void setLine(String line) {

@ -120,6 +120,7 @@ public class Result implements Parcelable {
public static Result error(String msg) {
Result result = new Result();
result.setParse(0);
result.setMsg(msg);
return result;
}

@ -41,4 +41,9 @@ public class SessionCallback extends MediaSessionCompat.Callback {
public void onSkipToNext() {
ActionEvent.send(ActionEvent.NEXT);
}
@Override
public void onStop() {
ActionEvent.send(ActionEvent.STOP);
}
}

@ -4,6 +4,7 @@ import android.net.Uri;
import android.util.Base64;
import com.fongmi.android.tv.bean.Episode;
import com.fongmi.android.tv.exception.ExtractException;
import com.fongmi.android.tv.player.Source;
import com.github.catvod.net.OkHttp;
import com.github.kiulian.downloader.YoutubeDownloader;
@ -48,6 +49,7 @@ public class Youtube implements Source.Extractor {
String videoId = matcher.group();
RequestVideoInfo request = new RequestVideoInfo(videoId);
VideoInfo info = getDownloader().getVideoInfo(request).data();
if (info == null || info.details() == null) throw new ExtractException("");
return info.details().isLive() ? info.details().liveUrl() : getMpdWithBase64(info);
}

@ -1,7 +1,6 @@
package com.fongmi.android.tv.utils;
import android.app.Activity;
import android.app.UiModeManager;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.ComponentName;
@ -9,7 +8,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.os.BatteryManager;
import android.os.Build;
import android.os.IBinder;
@ -22,6 +20,7 @@ import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.github.catvod.Init;
import java.text.SimpleDateFormat;
@ -68,13 +67,19 @@ public class Util {
public static CharSequence getClipText() {
ClipboardManager manager = (ClipboardManager) App.get().getSystemService(Context.CLIPBOARD_SERVICE);
if (manager.getPrimaryClip() == null || manager.getPrimaryClip().getItemCount() == 0) return "";
return manager.getPrimaryClip().getItemAt(0).getText();
ClipData clipData = manager == null ? null : manager.getPrimaryClip();
if (clipData == null || clipData.getItemCount() == 0) return "";
return clipData.getItemAt(0).getText();
}
public static void copy(String text) {
ClipboardManager manager = (ClipboardManager) App.get().getSystemService(Context.CLIPBOARD_SERVICE);
manager.setPrimaryClip(ClipData.newPlainText("", text));
try {
ClipboardManager manager = (ClipboardManager) App.get().getSystemService(Context.CLIPBOARD_SERVICE);
manager.setPrimaryClip(ClipData.newPlainText("", text));
Notify.show(R.string.copied);
} catch (Exception e) {
e.printStackTrace();
}
}
public static int getDigit(String text) {

@ -127,6 +127,14 @@
android:name=".receiver.ShortcutReceiver"
android:exported="false" />
<receiver
android:name="androidx.media.session.MediaButtonReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
<service
android:name="com.android.cast.dlna.dmc.DLNACastService"
android:exported="false" />

@ -154,9 +154,9 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
private boolean fullscreen;
private boolean initTrack;
private boolean initAuto;
private boolean redirect;
private boolean autoMode;
private boolean useParse;
private boolean redirect;
private boolean rotate;
private boolean stop;
private boolean lock;
@ -774,7 +774,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private boolean onCopy() {
Notify.show(R.string.copied);
Util.copy(mBinding.content.getText().toString());
return true;
}
@ -990,7 +989,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
boolean visible = (!controlVisible || isLock()) && !pictureMode && !hasDialog;
mBinding.display.clock.setVisibility(Setting.isDisplayTime() && visible ? View.VISIBLE : View.GONE);
mBinding.display.netspeed.setVisibility(Setting.isDisplaySpeed() && visible ? View.VISIBLE : View.GONE);
mBinding.display.duration.setVisibility(Setting.isDisplayDuration() && visible ? View.VISIBLE : View.GONE);
mBinding.display.duration.setVisibility(Setting.isDisplayDuration() && visible && (mPlayers.isVod()) ? View.VISIBLE : View.GONE);
mBinding.display.progress.setVisibility(Setting.isDisplayMiniProgress() && visible && (mPlayers.isVod()) ? View.VISIBLE : View.GONE);
mBinding.display.titleLayout.setVisibility(Setting.isDisplayVideoTitle()&& visible ? View.VISIBLE : View.GONE);
}
@ -1292,20 +1291,10 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshEvent(RefreshEvent event) {
if (isRedirect()) return;
switch (event.getType()) {
case DETAIL:
getDetail();
break;
case PLAYER:
onRefresh();
break;
case DANMAKU:
checkDanmu(event.getPath());
break;
case SUBTITLE:
mPlayers.setSub(Sub.from(event.getPath()));
break;
}
if (event.getType() == RefreshEvent.Type.DETAIL) getDetail();
else if (event.getType() == RefreshEvent.Type.PLAYER) onRefresh();
else if (event.getType() == RefreshEvent.Type.DANMAKU) checkDanmu(event.getPath());
else if (event.getType() == RefreshEvent.Type.SUBTITLE) mPlayers.setSub(Sub.from(event.getPath()));
}
@Subscribe(threadMode = ThreadMode.MAIN)
@ -1583,14 +1572,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
this.initAuto = initAuto;
}
public boolean isRedirect() {
return redirect;
}
public void setRedirect(boolean redirect) {
this.redirect = redirect;
}
private boolean isAutoMode() {
return autoMode;
}
@ -1607,6 +1588,14 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
this.useParse = useParse;
}
public boolean isRedirect() {
return redirect;
}
public void setRedirect(boolean redirect) {
this.redirect = redirect;
}
public boolean isRotate() {
return rotate;
}

@ -7,9 +7,7 @@ import android.view.View;
import androidx.appcompat.app.AlertDialog;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.databinding.DialogInfoBinding;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Util;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@ -86,7 +84,6 @@ public class InfoDialog {
}
private boolean onCopy(String text) {
Notify.show(R.string.copied);
Util.copy(text);
return true;
}

@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.east.android.zlive" />
<manifest />
Loading…
Cancel
Save