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" />