直播无需jar代理;兼容蜂蜜在线配置;竖屏按钮显示时机修正

pull/69/head
于俊 3 years ago
parent e631bcf02a
commit 282b123960
  1. 17
      app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java
  2. 9
      app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java
  3. 20
      app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java
  4. 1
      app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
  5. 1
      app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java
  6. 99
      app/src/main/java/com/github/tvbox/osc/util/live/TxtSubscribe.java

@ -381,7 +381,22 @@ public class ApiConfig {
liveChannelGroup.setGroupName(url);
liveChannelGroupList.add(liveChannelGroup);
} else {
if(lives.contains("group"))loadLives(infoJson.get("lives").getAsJsonArray());
if(lives.contains("group")){
loadLives(infoJson.get("lives").getAsJsonArray());
}else {
JsonObject fengMiLives = infoJson.get("lives").getAsJsonArray().get(0).getAsJsonObject();
String type=fengMiLives.get("type").getAsString();
if(type.equals("0")){
String url =fengMiLives.get("url").getAsString();
if(url.startsWith("http")){
url = Base64.encodeToString(url.getBytes("UTF-8"), Base64.DEFAULT | Base64.URL_SAFE | Base64.NO_WRAP);
}
url ="http://127.0.0.1:9978/proxy?do=live&type=txt&ext="+url;
LiveChannelGroup liveChannelGroup = new LiveChannelGroup();
liveChannelGroup.setGroupName(url);
liveChannelGroupList.add(liveChannelGroup);
}
}
}
} catch (Throwable th) {
th.printStackTrace();

@ -1,5 +1,6 @@
package com.github.tvbox.osc.player.controller;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.os.Handler;
@ -612,11 +613,11 @@ public class VodController extends BaseController {
}
public void initLandscapePortraitBtnInfo() {
if(mControlWrapper!=null){
if(mControlWrapper!=null && mActivity!=null){
int width = mControlWrapper.getVideoSize()[0];
int height = mControlWrapper.getVideoSize()[1];
double screenSqrt = ScreenUtils.getSqrt(mActivity);
if (screenSqrt < 20.0 && width < height) {
if (screenSqrt < 10.0 && width < height) {
mLandscapePortraitBtn.setVisibility(View.VISIBLE);
mLandscapePortraitBtn.setText("竖屏");
}
@ -805,6 +806,7 @@ public class VodController extends BaseController {
case VideoView.STATE_IDLE:
break;
case VideoView.STATE_PLAYING:
initLandscapePortraitBtnInfo();
startProgress();
break;
case VideoView.STATE_PAUSED:
@ -901,7 +903,6 @@ public class VodController extends BaseController {
float speed = 3.0f;
mPlayerConfig.put("sp", speed);
updatePlayerCfgView();
mBottomRoot.setVisibility(VISIBLE);
listener.updatePlayerCfg();
mControlWrapper.setSpeed(speed);
} catch (JSONException f) {
@ -910,6 +911,7 @@ public class VodController extends BaseController {
}
}
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouchEvent(MotionEvent e) {
if (e.getAction() == MotionEvent.ACTION_UP) {
@ -919,7 +921,6 @@ public class VodController extends BaseController {
float speed = speed_old;
mPlayerConfig.put("sp", speed);
updatePlayerCfgView();
mBottomRoot.setVisibility(GONE);
listener.updatePlayerCfg();
mControlWrapper.setSpeed(speed);
} catch (JSONException f) {

@ -5,8 +5,10 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.IntEvaluator;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.net.Uri;
import android.os.CountDownTimer;
import android.os.Handler;
import android.util.Base64;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
@ -53,6 +55,7 @@ import com.github.tvbox.osc.util.EpgUtil;
import com.github.tvbox.osc.util.FastClickCheckUtil;
import com.github.tvbox.osc.util.HawkConfig;
import com.github.tvbox.osc.util.LOG;
import com.github.tvbox.osc.util.live.TxtSubscribe;
import com.github.tvbox.osc.util.urlhttp.CallBackUtil;
import com.github.tvbox.osc.util.urlhttp.UrlHttpUtil;
import com.google.gson.Gson;
@ -80,6 +83,7 @@ import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Hashtable;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
@ -1526,7 +1530,6 @@ public class LivePlayActivity extends BaseActivity {
}
if (list.size() == 1 && list.get(0).getGroupName().startsWith("http://127.0.0.1")) {
showLoading();
loadProxyLives(list.get(0).getGroupName());
}
else {
@ -1538,6 +1541,15 @@ public class LivePlayActivity extends BaseActivity {
}
public void loadProxyLives(String url) {
try {
Uri parsedUrl = Uri.parse(url);
url = new String(Base64.decode(parsedUrl.getQueryParameter("ext"), Base64.DEFAULT | Base64.URL_SAFE | Base64.NO_WRAP), "UTF-8");
} catch (Throwable th) {
Toast.makeText(App.getInstance(), "频道列表为空", Toast.LENGTH_SHORT).show();
finish();
return;
}
showLoading();
OkGo.<String>get(url).execute(new AbsCallback<String>() {
@Override
@ -1547,7 +1559,11 @@ public class LivePlayActivity extends BaseActivity {
@Override
public void onSuccess(Response<String> response) {
JsonArray livesArray = new Gson().fromJson(response.body(), JsonArray.class);
JsonArray livesArray;
LinkedHashMap<String, LinkedHashMap<String, ArrayList<String>>> linkedHashMap = new LinkedHashMap<>();
TxtSubscribe.parse(linkedHashMap, response.body());
livesArray = TxtSubscribe.live2JsonArray(linkedHashMap);
ApiConfig.get().loadLives(livesArray);
List<LiveChannelGroup> list = ApiConfig.get().getChannelGroupList();
if (list.isEmpty()) {

@ -544,7 +544,6 @@ public class PlayActivity extends BaseActivity {
}
mVideoView.start();
mController.resetSpeed();
mController.initLandscapePortraitBtnInfo();
}
}
}

@ -542,7 +542,6 @@ public class PlayFragment extends BaseLazyFragment {
}
mVideoView.start();
mController.resetSpeed();
mController.initLandscapePortraitBtnInfo();
}
}
}

@ -0,0 +1,99 @@
package com.github.tvbox.osc.util.live;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.io.BufferedReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.LinkedHashMap;
public class TxtSubscribe {
public static void parse(LinkedHashMap<String, LinkedHashMap<String, ArrayList<String>>> linkedHashMap, String str) {
ArrayList<String> arrayList;
try {
BufferedReader bufferedReader = new BufferedReader(new StringReader(str));
String readLine = bufferedReader.readLine();
LinkedHashMap<String, ArrayList<String>> linkedHashMap2 = new LinkedHashMap<>();
LinkedHashMap<String, ArrayList<String>> linkedHashMap3 = linkedHashMap2;
while (readLine != null) {
if (readLine.trim().isEmpty()) {
readLine = bufferedReader.readLine();
} else {
String[] split = readLine.split(",");
if (split.length < 2) {
readLine = bufferedReader.readLine();
} else {
if (readLine.contains("#genre#")) {
String trim = split[0].trim();
if (!linkedHashMap.containsKey(trim)) {
linkedHashMap3 = new LinkedHashMap<>();
linkedHashMap.put(trim, linkedHashMap3);
} else {
linkedHashMap3 = linkedHashMap.get(trim);
}
} else {
String trim2 = split[0].trim();
for (String str2 : split[1].trim().split("#")) {
String trim3 = str2.trim();
if (!trim3.isEmpty() && (trim3.startsWith("http") || trim3.startsWith("rtsp") || trim3.startsWith("rtmp"))) {
if (!linkedHashMap3.containsKey(trim2)) {
arrayList = new ArrayList<>();
linkedHashMap3.put(trim2, arrayList);
} else {
arrayList = linkedHashMap3.get(trim2);
}
if (!arrayList.contains(trim3)) {
arrayList.add(trim3);
}
}
}
}
readLine = bufferedReader.readLine();
}
}
}
bufferedReader.close();
if (linkedHashMap2.isEmpty()) {
return;
}
linkedHashMap.put("未分组", linkedHashMap2);
} catch (Throwable unused) {
}
}
public static JsonArray live2JsonArray(LinkedHashMap<String, LinkedHashMap<String, ArrayList<String>>> linkedHashMap) {
JsonArray jsonarr = new JsonArray();
for (String str : linkedHashMap.keySet()) {
JsonArray jsonarr2 = new JsonArray();
LinkedHashMap<String, ArrayList<String>> linkedHashMap2 = linkedHashMap.get(str);
if (!linkedHashMap2.isEmpty()) {
for (String str2 : linkedHashMap2.keySet()) {
ArrayList<String> arrayList = linkedHashMap2.get(str2);
if (!arrayList.isEmpty()) {
JsonArray jsonarr3 = new JsonArray();
for (int i = 0; i < arrayList.size(); i++) {
jsonarr3.add(arrayList.get(i));
}
JsonObject jsonobj = new JsonObject();
try {
jsonobj.addProperty("name", str2);
jsonobj.add("urls", jsonarr3);
} catch (Throwable e) {
}
jsonarr2.add(jsonobj);
}
}
JsonObject jsonobj2 = new JsonObject();
try {
jsonobj2.addProperty("group", str);
jsonobj2.add("channels", jsonarr2);
} catch (Throwable e) {
}
jsonarr.add(jsonobj2);
}
}
return jsonarr;
}
}
Loading…
Cancel
Save