diff --git a/app/schemas/com.github.tvbox.osc.data.AppDataBase/1.json b/app/schemas/com.github.tvbox.osc.data.AppDataBase/1.json
index 5a89efd9..1c844a7a 100644
--- a/app/schemas/com.github.tvbox.osc.data.AppDataBase/1.json
+++ b/app/schemas/com.github.tvbox.osc.data.AppDataBase/1.json
@@ -2,7 +2,7 @@
"formatVersion": 1,
"database": {
"version": 1,
- "identityHash": "6d7179059b55b28fda16a36a445f306f",
+ "identityHash": "d1c2780b5424f0e960fe2364f63c86b8",
"entities": [
{
"tableName": "cache",
@@ -32,7 +32,7 @@
},
{
"tableName": "vodRecord",
- "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `vodId` TEXT, `updateTime` INTEGER NOT NULL, `sourceKey` TEXT, `data` BLOB, `dataJson` TEXT, `testMigration` INTEGER NOT NULL)",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `vodId` TEXT, `updateTime` INTEGER NOT NULL, `sourceKey` TEXT, `dataJson` TEXT)",
"fields": [
{
"fieldPath": "id",
@@ -59,22 +59,60 @@
"notNull": false
},
{
- "fieldPath": "data",
- "columnName": "data",
- "affinity": "BLOB",
+ "fieldPath": "dataJson",
+ "columnName": "dataJson",
+ "affinity": "TEXT",
"notNull": false
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "vodCollect",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `vodId` TEXT, `updateTime` INTEGER NOT NULL, `sourceKey` TEXT, `name` TEXT, `pic` TEXT)",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
},
{
- "fieldPath": "dataJson",
- "columnName": "dataJson",
+ "fieldPath": "vodId",
+ "columnName": "vodId",
"affinity": "TEXT",
"notNull": false
},
{
- "fieldPath": "testMigration",
- "columnName": "testMigration",
+ "fieldPath": "updateTime",
+ "columnName": "updateTime",
"affinity": "INTEGER",
"notNull": true
+ },
+ {
+ "fieldPath": "sourceKey",
+ "columnName": "sourceKey",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "name",
+ "columnName": "name",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "pic",
+ "columnName": "pic",
+ "affinity": "TEXT",
+ "notNull": false
}
],
"primaryKey": {
@@ -90,7 +128,7 @@
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
- "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '6d7179059b55b28fda16a36a445f306f')"
+ "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'd1c2780b5424f0e960fe2364f63c86b8')"
]
}
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e284792b..f889a138 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -55,6 +55,9 @@
+
diff --git a/app/src/main/java/com/github/tvbox/osc/bean/SourceBean.java b/app/src/main/java/com/github/tvbox/osc/bean/SourceBean.java
index 37b569aa..b0f3e925 100644
--- a/app/src/main/java/com/github/tvbox/osc/bean/SourceBean.java
+++ b/app/src/main/java/com/github/tvbox/osc/bean/SourceBean.java
@@ -1,11 +1,5 @@
package com.github.tvbox.osc.bean;
-import com.github.tvbox.osc.cache.RoomDataManger;
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-
-import java.util.HashMap;
-
/**
* @author pj567
* @date :2020/12/18
diff --git a/app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java b/app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java
index 7e217387..a296a8ea 100644
--- a/app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java
+++ b/app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java
@@ -47,6 +47,7 @@ public class VodInfo implements Serializable {
public String playFlag = null;
public int playIndex = 0;
public String sourceKey;
+ public String playerCfg = "";
public void setVideo(Movie.Video video) {
last = video.last;
diff --git a/app/src/main/java/com/github/tvbox/osc/cache/RoomDataManger.java b/app/src/main/java/com/github/tvbox/osc/cache/RoomDataManger.java
index d3b0bb44..7f8ca6dd 100644
--- a/app/src/main/java/com/github/tvbox/osc/cache/RoomDataManger.java
+++ b/app/src/main/java/com/github/tvbox/osc/cache/RoomDataManger.java
@@ -13,7 +13,6 @@ import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
/**
@@ -52,7 +51,6 @@ public class RoomDataManger {
record.sourceKey = sourceKey;
record.vodId = vodInfo.id;
record.updateTime = System.currentTimeMillis();
- record.data = null;
record.dataJson = getVodInfoGson().toJson(vodInfo);
AppDataManager.get().getVodRecordDao().insert(record);
}
@@ -63,7 +61,7 @@ public class RoomDataManger {
if (record != null && record.dataJson != null && !TextUtils.isEmpty(record.dataJson)) {
VodInfo vodInfo = getVodInfoGson().fromJson(record.dataJson, new TypeToken() {
}.getType());
- if (vodInfo.name == null || vodInfo.type == null)
+ if (vodInfo.name == null)
return null;
return vodInfo;
}
@@ -104,4 +102,26 @@ public class RoomDataManger {
}
return vodInfoList;
}
+
+ public static void insertVodCollect(String sourceKey, VodInfo vodInfo) {
+ VodCollect record = AppDataManager.get().getVodCollectDao().getVodCollect(sourceKey, vodInfo.id);
+ if (record != null) {
+ return;
+ }
+ record = new VodCollect();
+ record.sourceKey = sourceKey;
+ record.vodId = vodInfo.id;
+ record.updateTime = System.currentTimeMillis();
+ record.name = vodInfo.name;
+ record.pic = vodInfo.pic;
+ AppDataManager.get().getVodCollectDao().insert(record);
+ }
+
+ public static void deleteVodCollect(int id) {
+ AppDataManager.get().getVodCollectDao().delete(id);
+ }
+
+ public static List getAllVodCollect() {
+ return AppDataManager.get().getVodCollectDao().getAll();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/tvbox/osc/cache/VodCollect.java b/app/src/main/java/com/github/tvbox/osc/cache/VodCollect.java
new file mode 100644
index 00000000..42434aa9
--- /dev/null
+++ b/app/src/main/java/com/github/tvbox/osc/cache/VodCollect.java
@@ -0,0 +1,31 @@
+package com.github.tvbox.osc.cache;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+import java.io.Serializable;
+
+@Entity(tableName = "vodCollect")
+public class VodCollect implements Serializable {
+ @PrimaryKey(autoGenerate = true)
+ private int id;
+ @ColumnInfo(name = "vodId")
+ public String vodId;
+ @ColumnInfo(name = "updateTime")
+ public long updateTime;
+ @ColumnInfo(name = "sourceKey")
+ public String sourceKey;
+ @ColumnInfo(name = "name")
+ public String name;
+ @ColumnInfo(name = "pic")
+ public String pic;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/tvbox/osc/cache/VodCollectDao.java b/app/src/main/java/com/github/tvbox/osc/cache/VodCollectDao.java
new file mode 100644
index 00000000..86b699a8
--- /dev/null
+++ b/app/src/main/java/com/github/tvbox/osc/cache/VodCollectDao.java
@@ -0,0 +1,35 @@
+package com.github.tvbox.osc.cache;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+
+import java.util.List;
+
+/**
+ * @author pj567
+ * @date :2021/1/7
+ * @description:
+ */
+@Dao
+public interface VodCollectDao {
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ long insert(VodCollect record);
+
+ @Query("select * from vodCollect order by updateTime desc")
+ List getAll();
+
+ @Query("select * from vodCollect where `id`=:id")
+ VodCollect getVodCollect(int id);
+
+ @Query("delete from vodCollect where `id`=:id")
+ void delete(int id);
+
+ @Query("select * from vodCollect where `sourceKey`=:sourceKey and `vodId`=:vodId")
+ VodCollect getVodCollect(String sourceKey, String vodId);
+
+ @Delete
+ int delete(VodCollect record);
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/tvbox/osc/cache/VodRecord.java b/app/src/main/java/com/github/tvbox/osc/cache/VodRecord.java
index a4156671..75a781d2 100644
--- a/app/src/main/java/com/github/tvbox/osc/cache/VodRecord.java
+++ b/app/src/main/java/com/github/tvbox/osc/cache/VodRecord.java
@@ -21,11 +21,8 @@ public class VodRecord implements Serializable {
public long updateTime;
@ColumnInfo(name = "sourceKey")
public String sourceKey;
- public byte[] data;
public String dataJson;
- public int testMigration;
-
public int getId() {
return id;
}
diff --git a/app/src/main/java/com/github/tvbox/osc/data/AppDataBase.java b/app/src/main/java/com/github/tvbox/osc/data/AppDataBase.java
index 03bef12d..da5e3fe9 100644
--- a/app/src/main/java/com/github/tvbox/osc/data/AppDataBase.java
+++ b/app/src/main/java/com/github/tvbox/osc/data/AppDataBase.java
@@ -5,6 +5,8 @@ import androidx.room.RoomDatabase;
import com.github.tvbox.osc.cache.Cache;
import com.github.tvbox.osc.cache.CacheDao;
+import com.github.tvbox.osc.cache.VodCollect;
+import com.github.tvbox.osc.cache.VodCollectDao;
import com.github.tvbox.osc.cache.VodRecord;
import com.github.tvbox.osc.cache.VodRecordDao;
@@ -15,9 +17,11 @@ import com.github.tvbox.osc.cache.VodRecordDao;
* @author pj567
* @since 2020/5/15
*/
-@Database(entities = {Cache.class, VodRecord.class}, version = 1)
+@Database(entities = {Cache.class, VodRecord.class, VodCollect.class}, version = 1)
public abstract class AppDataBase extends RoomDatabase {
public abstract CacheDao getCacheDao();
public abstract VodRecordDao getVodRecordDao();
+
+ public abstract VodCollectDao getVodCollectDao();
}
diff --git a/app/src/main/java/com/github/tvbox/osc/data/AppDataManager.java b/app/src/main/java/com/github/tvbox/osc/data/AppDataManager.java
index c8160165..9cc4dc91 100644
--- a/app/src/main/java/com/github/tvbox/osc/data/AppDataManager.java
+++ b/app/src/main/java/com/github/tvbox/osc/data/AppDataManager.java
@@ -19,7 +19,7 @@ import com.github.tvbox.osc.base.App;
* @since 2020/5/15
*/
public class AppDataManager {
- private static final String DB_NAME = "tvbox_v1.db";
+ private static final String DB_NAME = "tvbox_v2.db";
private static AppDataManager manager;
private static AppDataBase dbInstance;
diff --git a/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java b/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java
index 435c3f09..b1f8caaa 100644
--- a/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java
+++ b/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java
@@ -21,10 +21,6 @@ import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7LinearLayoutManager;
import org.jetbrains.annotations.NotNull;
-import org.json.JSONObject;
-
-import java.util.HashMap;
-import java.util.Iterator;
import xyz.doikki.videoplayer.player.VideoView;
import xyz.doikki.videoplayer.util.PlayerUtils;
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/CollectActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/CollectActivity.java
new file mode 100644
index 00000000..6a035b6e
--- /dev/null
+++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/CollectActivity.java
@@ -0,0 +1,143 @@
+package com.github.tvbox.osc.ui.activity;
+
+import android.content.Intent;
+import android.graphics.Color;
+import android.view.View;
+import android.view.animation.BounceInterpolator;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.github.tvbox.osc.R;
+import com.github.tvbox.osc.base.BaseActivity;
+import com.github.tvbox.osc.cache.RoomDataManger;
+import com.github.tvbox.osc.cache.VodCollect;
+import com.github.tvbox.osc.event.RefreshEvent;
+import com.github.tvbox.osc.ui.adapter.CollectAdapter;
+import com.github.tvbox.osc.util.FastClickCheckUtil;
+import com.owen.tvrecyclerview.widget.TvRecyclerView;
+import com.owen.tvrecyclerview.widget.V7GridLayoutManager;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CollectActivity extends BaseActivity {
+ private TextView tvDel;
+ private TextView tvDelTip;
+ private TvRecyclerView mGridView;
+ private CollectAdapter collectAdapter;
+ private boolean delMode = false;
+
+ @Override
+ protected int getLayoutResID() {
+ return R.layout.activity_collect;
+ }
+
+ @Override
+ protected void init() {
+ initView();
+ initData();
+ }
+
+ private void toggleDelMode() {
+ delMode = !delMode;
+ tvDelTip.setVisibility(delMode ? View.VISIBLE : View.GONE);
+ tvDel.setTextColor(delMode ? getResources().getColor(R.color.color_FF0057) : Color.WHITE);
+ }
+
+ private void initView() {
+ EventBus.getDefault().register(this);
+ tvDel = findViewById(R.id.tvDel);
+ tvDelTip = findViewById(R.id.tvDelTip);
+ mGridView = findViewById(R.id.mGridView);
+ mGridView.setHasFixedSize(true);
+ mGridView.setLayoutManager(new V7GridLayoutManager(this.mContext, 5));
+ collectAdapter = new CollectAdapter();
+ mGridView.setAdapter(collectAdapter);
+ tvDel.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ toggleDelMode();
+ }
+ });
+ mGridView.setOnInBorderKeyEventListener(new TvRecyclerView.OnInBorderKeyEventListener() {
+ @Override
+ public boolean onInBorderKeyEvent(int direction, View focused) {
+ if (direction == View.FOCUS_UP) {
+ tvDel.setFocusable(true);
+ tvDel.requestFocus();
+ }
+ return false;
+ }
+ });
+ mGridView.setOnItemListener(new TvRecyclerView.OnItemListener() {
+ @Override
+ public void onItemPreSelected(TvRecyclerView parent, View itemView, int position) {
+ itemView.animate().scaleX(1.0f).scaleY(1.0f).setDuration(300).setInterpolator(new BounceInterpolator()).start();
+ }
+
+ @Override
+ public void onItemSelected(TvRecyclerView parent, View itemView, int position) {
+ itemView.animate().scaleX(1.05f).scaleY(1.05f).setDuration(300).setInterpolator(new BounceInterpolator()).start();
+ }
+
+ @Override
+ public void onItemClick(TvRecyclerView parent, View itemView, int position) {
+
+ }
+ });
+ collectAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+ @Override
+ public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
+ FastClickCheckUtil.check(view);
+ VodCollect vodInfo = collectAdapter.getData().get(position);
+ if (vodInfo != null) {
+ if (delMode) {
+ collectAdapter.remove(position);
+ RoomDataManger.deleteVodCollect(vodInfo.getId());
+ } else {
+ Intent newIntent = new Intent(mContext, SearchActivity.class);
+ newIntent.putExtra("title", vodInfo.name);
+ newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(newIntent);
+ }
+ }
+ }
+ });
+ }
+
+ private void initData() {
+ List allVodRecord = RoomDataManger.getAllVodCollect();
+ List vodInfoList = new ArrayList<>();
+ for (VodCollect vodInfo : allVodRecord) {
+ vodInfoList.add(vodInfo);
+ }
+ collectAdapter.setNewData(vodInfoList);
+ }
+
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void refresh(RefreshEvent event) {
+ if (event.type == RefreshEvent.TYPE_HISTORY_REFRESH) {
+ initData();
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ EventBus.getDefault().unregister(this);
+ }
+
+ @Override
+ public void onBackPressed() {
+ if (delMode) {
+ toggleDelMode();
+ return;
+ }
+ super.onBackPressed();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
index 751b1292..343f35d0 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
@@ -8,6 +8,7 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import android.widget.Toast;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
@@ -70,6 +71,7 @@ public class DetailActivity extends BaseActivity {
private TextView tvDes;
private TextView tvPlay;
private TextView tvQuickSearch;
+ private TextView tvCollect;
private TvRecyclerView mGridViewFlag;
private TvRecyclerView mGridView;
private LinearLayout mEmptyPlayList;
@@ -109,6 +111,7 @@ public class DetailActivity extends BaseActivity {
tvDirector = findViewById(R.id.tvDirector);
tvDes = findViewById(R.id.tvDes);
tvPlay = findViewById(R.id.tvPlay);
+ tvCollect = findViewById(R.id.tvCollect);
tvQuickSearch = findViewById(R.id.tvQuickSearch);
mEmptyPlayList = findViewById(R.id.mEmptyPlaylist);
mGridView = findViewById(R.id.mGridView);
@@ -138,6 +141,13 @@ public class DetailActivity extends BaseActivity {
quickSearchDialog.show();
}
});
+ tvCollect.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ RoomDataManger.insertVodCollect(sourceKey, vodInfo);
+ Toast.makeText(DetailActivity.this, "已加入收藏夹", Toast.LENGTH_SHORT).show();
+ }
+ });
mGridView.setOnItemListener(new TvRecyclerView.OnItemListener() {
@Override
public void onItemPreSelected(TvRecyclerView parent, View itemView, int position) {
@@ -301,9 +311,11 @@ public class DetailActivity extends BaseActivity {
if (vodInfoRecord != null) {
vodInfo.playIndex = Math.max(vodInfoRecord.playIndex, 0);
vodInfo.playFlag = vodInfoRecord.playFlag;
+ vodInfo.playerCfg = vodInfoRecord.playerCfg;
} else {
vodInfo.playIndex = 0;
vodInfo.playFlag = null;
+ vodInfo.playerCfg = "";
}
if (vodInfo.playFlag == null || !vodInfo.seriesMap.containsKey(vodInfo.playFlag))
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java
index 77b4fdb2..e75a95f8 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java
@@ -37,7 +37,6 @@ import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.AbsCallback;
import com.lzy.okgo.model.Response;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
-import com.owen.tvrecyclerview.widget.V7GridLayoutManager;
import com.owen.tvrecyclerview.widget.V7LinearLayoutManager;
import org.greenrobot.eventbus.EventBus;
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/adapter/CollectAdapter.java b/app/src/main/java/com/github/tvbox/osc/ui/adapter/CollectAdapter.java
new file mode 100644
index 00000000..d8990e5f
--- /dev/null
+++ b/app/src/main/java/com/github/tvbox/osc/ui/adapter/CollectAdapter.java
@@ -0,0 +1,46 @@
+package com.github.tvbox.osc.ui.adapter;
+
+import android.text.TextUtils;
+import android.widget.ImageView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.github.tvbox.osc.R;
+import com.github.tvbox.osc.cache.VodCollect;
+import com.github.tvbox.osc.picasso.RoundTransformation;
+import com.github.tvbox.osc.util.MD5;
+import com.squareup.picasso.Picasso;
+
+import java.util.ArrayList;
+
+import me.jessyan.autosize.utils.AutoSizeUtils;
+
+public class CollectAdapter extends BaseQuickAdapter {
+ public CollectAdapter() {
+ super(R.layout.item_grid, new ArrayList<>());
+ }
+
+ @Override
+ protected void convert(BaseViewHolder helper, VodCollect item) {
+ helper.setVisible(R.id.tvYear, false);
+ helper.setVisible(R.id.tvLang, false);
+ helper.setVisible(R.id.tvArea, false);
+ helper.setVisible(R.id.tvNote, false);
+ helper.setText(R.id.tvName, item.name);
+ ImageView ivThumb = helper.getView(R.id.ivThumb);
+ //由于部分电视机使用glide报错
+ if (!TextUtils.isEmpty(item.pic)) {
+ Picasso.get()
+ .load(item.pic)
+ .transform(new RoundTransformation(MD5.string2MD5(item.pic + item.name))
+ .centerCorp(true)
+ .override(AutoSizeUtils.mm2px(mContext, 300), AutoSizeUtils.mm2px(mContext, 400))
+ .roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL))
+ .placeholder(R.drawable.img_loading_placeholder)
+ .error(R.drawable.img_loading_placeholder)
+ .into(ivThumb);
+ } else {
+ ivThumb.setImageResource(R.drawable.img_loading_placeholder);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/dialog/ApiHistoryDialog.java b/app/src/main/java/com/github/tvbox/osc/ui/dialog/ApiHistoryDialog.java
index ed479d1d..4c2dd509 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/dialog/ApiHistoryDialog.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/dialog/ApiHistoryDialog.java
@@ -2,11 +2,9 @@ package com.github.tvbox.osc.ui.dialog;
import android.content.Context;
import android.os.Bundle;
-import android.view.WindowManager;
import android.widget.TextView;
import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.DiffUtil;
import com.github.tvbox.osc.R;
import com.github.tvbox.osc.ui.adapter.ApiHistoryDialogAdapter;
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/dialog/QuickSearchDialog.java b/app/src/main/java/com/github/tvbox/osc/ui/dialog/QuickSearchDialog.java
index ca3a02ff..47040868 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/dialog/QuickSearchDialog.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/dialog/QuickSearchDialog.java
@@ -11,7 +11,6 @@ import com.github.tvbox.osc.R;
import com.github.tvbox.osc.bean.Movie;
import com.github.tvbox.osc.event.RefreshEvent;
import com.github.tvbox.osc.ui.adapter.QuickSearchAdapter;
-import com.github.tvbox.osc.ui.adapter.SearchAdapter;
import com.github.tvbox.osc.ui.adapter.SearchWordAdapter;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7LinearLayoutManager;
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/ModelSettingFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/ModelSettingFragment.java
index 163f088a..43f7177b 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/ModelSettingFragment.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/ModelSettingFragment.java
@@ -75,8 +75,8 @@ public class ModelSettingFragment extends BaseLazyFragment {
tvXWalkDown.setText(XWalkUtils.xWalkLibExist(mContext) ? "已下载" : "未下载");
tvApi.setText(Hawk.get(HawkConfig.API_URL, ""));
tvHomeApi.setText(ApiConfig.get().getHomeSourceBean().getName());
- tvPlay.setText(getPlayerName(Hawk.get(HawkConfig.PLAY_TYPE, 0)));
- tvRender.setText(getRenderName(Hawk.get(HawkConfig.PLAY_RENDER, 0)));
+ tvPlay.setText(PlayerHelper.getPlayerName(Hawk.get(HawkConfig.PLAY_TYPE, 0)));
+ tvRender.setText(PlayerHelper.getRenderName(Hawk.get(HawkConfig.PLAY_RENDER, 0)));
findViewById(R.id.llXWalkCore).setVisibility(Hawk.get(HawkConfig.PARSE_WEBVIEW, true) ? View.GONE : View.VISIBLE);
findViewById(R.id.llDebug).setOnClickListener(new View.OnClickListener() {
@Override
@@ -180,7 +180,7 @@ public class ModelSettingFragment extends BaseLazyFragment {
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
- ((BaseActivity)mActivity).hideSysBar();
+ ((BaseActivity) mActivity).hideSysBar();
}
});
dialog.show();
@@ -245,13 +245,13 @@ public class ModelSettingFragment extends BaseLazyFragment {
@Override
public void click(Integer value, int pos) {
Hawk.put(HawkConfig.PLAY_TYPE, value);
- tvPlay.setText(getPlayerName(value));
+ tvPlay.setText(PlayerHelper.getPlayerName(value));
PlayerHelper.init();
}
@Override
public String getDisplay(Integer val) {
- return getPlayerName(val);
+ return PlayerHelper.getPlayerName(val);
}
}, new DiffUtil.ItemCallback() {
@Override
@@ -281,13 +281,13 @@ public class ModelSettingFragment extends BaseLazyFragment {
@Override
public void click(Integer value, int pos) {
Hawk.put(HawkConfig.PLAY_RENDER, value);
- tvRender.setText(getRenderName(value));
+ tvRender.setText(PlayerHelper.getRenderName(value));
PlayerHelper.init();
}
@Override
public String getDisplay(Integer val) {
- return getRenderName(val);
+ return PlayerHelper.getRenderName(val);
}
}, new DiffUtil.ItemCallback() {
@Override
@@ -311,24 +311,6 @@ public class ModelSettingFragment extends BaseLazyFragment {
};
}
- private String getPlayerName(int playType) {
- if (playType == 1) {
- return "IJK播放器";
- } else if (playType == 2) {
- return "Exo播放器";
- } else {
- return "系统播放器";
- }
- }
-
- private String getRenderName(int renderType) {
- if (renderType == 1) {
- return "SurfaceView";
- } else {
- return "TextureView";
- }
- }
-
@Override
public void onDestroyView() {
super.onDestroyView();
diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java
index 8a061cee..59cee482 100644
--- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java
+++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java
@@ -10,6 +10,7 @@ import com.github.tvbox.osc.R;
import com.github.tvbox.osc.api.ApiConfig;
import com.github.tvbox.osc.base.BaseLazyFragment;
import com.github.tvbox.osc.event.ServerEvent;
+import com.github.tvbox.osc.ui.activity.CollectActivity;
import com.github.tvbox.osc.ui.activity.HistoryActivity;
import com.github.tvbox.osc.ui.activity.LivePlayActivity;
import com.github.tvbox.osc.ui.activity.PushActivity;
@@ -44,6 +45,7 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen
private LinearLayout tvSearch;
private LinearLayout tvSetting;
private LinearLayout tvHistory;
+ private LinearLayout tvCollect;
private LinearLayout tvPush;
public static UserFragment newInstance() {
@@ -61,6 +63,7 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen
tvLive = findViewById(R.id.tvLive);
tvSearch = findViewById(R.id.tvSearch);
tvSetting = findViewById(R.id.tvSetting);
+ tvCollect = findViewById(R.id.tvFavorite);
tvHistory = findViewById(R.id.tvHistory);
tvPush = findViewById(R.id.tvPush);
tvLive.setOnClickListener(this);
@@ -68,11 +71,13 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen
tvSetting.setOnClickListener(this);
tvHistory.setOnClickListener(this);
tvPush.setOnClickListener(this);
+ tvCollect.setOnClickListener(this);
tvLive.setOnFocusChangeListener(focusChangeListener);
tvSearch.setOnFocusChangeListener(focusChangeListener);
tvSetting.setOnFocusChangeListener(focusChangeListener);
tvHistory.setOnFocusChangeListener(focusChangeListener);
tvPush.setOnFocusChangeListener(focusChangeListener);
+ tvCollect.setOnFocusChangeListener(focusChangeListener);
TvRecyclerView tvHotList = findViewById(R.id.tvHotList);
HomeHotVodAdapter adapter = new HomeHotVodAdapter();
adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@@ -185,6 +190,8 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen
jumpActivity(HistoryActivity.class);
} else if (v.getId() == R.id.tvPush) {
jumpActivity(PushActivity.class);
+ } else if (v.getId() == R.id.tvFavorite) {
+ jumpActivity(CollectActivity.class);
}
}
diff --git a/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java b/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java
index a6ff5959..c8b2288b 100644
--- a/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java
+++ b/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java
@@ -5,16 +5,13 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.text.TextUtils;
-import com.github.tvbox.osc.api.ApiConfig;
import com.github.tvbox.osc.bean.MovieSort;
-import com.github.tvbox.osc.bean.SourceBean;
import com.github.tvbox.osc.server.ControlManager;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;
diff --git a/app/src/main/java/com/github/tvbox/osc/util/PlayerHelper.java b/app/src/main/java/com/github/tvbox/osc/util/PlayerHelper.java
index c5d5070c..1f517429 100644
--- a/app/src/main/java/com/github/tvbox/osc/util/PlayerHelper.java
+++ b/app/src/main/java/com/github/tvbox/osc/util/PlayerHelper.java
@@ -110,4 +110,47 @@ public class PlayerHelper {
.setRenderViewFactory(renderViewFactory)
.build());
}
+
+ public static String getPlayerName(int playType) {
+ if (playType == 1) {
+ return "IJK播放器";
+ } else if (playType == 2) {
+ return "Exo播放器";
+ } else {
+ return "系统播放器";
+ }
+ }
+
+ public static String getRenderName(int renderType) {
+ if (renderType == 1) {
+ return "SurfaceView";
+ } else {
+ return "TextureView";
+ }
+ }
+
+ public static String getScaleName(int screenScaleType) {
+ String scaleText = "默认";
+ switch (screenScaleType) {
+ case VideoView.SCREEN_SCALE_DEFAULT:
+ scaleText = "默认";
+ break;
+ case VideoView.SCREEN_SCALE_16_9:
+ scaleText = "16:9";
+ break;
+ case VideoView.SCREEN_SCALE_4_3:
+ scaleText = "4:3";
+ break;
+ case VideoView.SCREEN_SCALE_MATCH_PARENT:
+ scaleText = "填充";
+ break;
+ case VideoView.SCREEN_SCALE_ORIGINAL:
+ scaleText = "原始";
+ break;
+ case VideoView.SCREEN_SCALE_CENTER_CROP:
+ scaleText = "裁剪";
+ break;
+ }
+ return scaleText;
+ }
}
diff --git a/app/src/main/res/layout/activity_collect.xml b/app/src/main/res/layout/activity_collect.xml
new file mode 100644
index 00000000..28490288
--- /dev/null
+++ b/app/src/main/res/layout/activity_collect.xml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_history.xml b/app/src/main/res/layout/activity_history.xml
index 5675bcc7..bfdbdc99 100644
--- a/app/src/main/res/layout/activity_history.xml
+++ b/app/src/main/res/layout/activity_history.xml
@@ -42,7 +42,8 @@
android:gravity="center"
android:text="确定键删除当前选中记录"
android:textColor="@android:color/white"
- android:textSize="@dimen/ts_24" />
+ android:textSize="@dimen/ts_24"
+ android:visibility="gone" />