Support adaptive track

pull/137/head
FongMi 3 years ago
parent d0690a1df9
commit dd2ef09244
  1. 14
      app/schemas/com.fongmi.android.tv.db.AppDatabase/24.json
  2. 1
      app/src/main/java/com/fongmi/android/tv/bean/History.java
  3. 9
      app/src/main/java/com/fongmi/android/tv/bean/Track.java
  4. 10
      app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java
  5. 3
      app/src/main/java/com/fongmi/android/tv/db/dao/TrackDao.java
  6. 4
      app/src/main/java/com/fongmi/android/tv/ui/adapter/TrackAdapter.java
  7. 2
      app/src/main/java/com/fongmi/android/tv/ui/custom/dialog/TrackDialog.java

@ -1,8 +1,8 @@
{ {
"formatVersion": 1, "formatVersion": 1,
"database": { "database": {
"version": 23, "version": 24,
"identityHash": "0d186de42a589253f12a86254e20636e", "identityHash": "d6fa99526559c6a3a44f3911535b3639",
"entities": [ "entities": [
{ {
"tableName": "Keep", "tableName": "Keep",
@ -112,7 +112,7 @@
}, },
{ {
"tableName": "Track", "tableName": "Track",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `type` INTEGER NOT NULL, `group` INTEGER NOT NULL, `track` INTEGER NOT NULL, `player` INTEGER NOT NULL, `key` TEXT, `name` TEXT, `selected` INTEGER NOT NULL)", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `type` INTEGER NOT NULL, `group` INTEGER NOT NULL, `track` INTEGER NOT NULL, `player` INTEGER NOT NULL, `key` TEXT, `name` TEXT, `selected` INTEGER NOT NULL, `adaptive` INTEGER NOT NULL)",
"fields": [ "fields": [
{ {
"fieldPath": "id", "fieldPath": "id",
@ -161,6 +161,12 @@
"columnName": "selected", "columnName": "selected",
"affinity": "INTEGER", "affinity": "INTEGER",
"notNull": true "notNull": true
},
{
"fieldPath": "adaptive",
"columnName": "adaptive",
"affinity": "INTEGER",
"notNull": true
} }
], ],
"primaryKey": { "primaryKey": {
@ -432,7 +438,7 @@
"views": [], "views": [],
"setupQueries": [ "setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", "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, '0d186de42a589253f12a86254e20636e')" "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'd6fa99526559c6a3a44f3911535b3639')"
] ]
} }
} }

@ -299,6 +299,7 @@ public class History {
public History delete() { public History delete() {
AppDatabase.get().getHistoryDao().delete(ApiConfig.getCid(), getKey()); AppDatabase.get().getHistoryDao().delete(ApiConfig.getCid(), getKey());
AppDatabase.get().getTrackDao().delete(getKey());
return this; return this;
} }

@ -22,6 +22,7 @@ public class Track {
private String key; private String key;
private String name; private String name;
private boolean selected; private boolean selected;
private boolean adaptive;
public Track(int type, String name) { public Track(int type, String name) {
this.type = type; this.type = type;
@ -92,6 +93,14 @@ public class Track {
this.selected = selected; this.selected = selected;
} }
public boolean isAdaptive() {
return adaptive;
}
public void setAdaptive(boolean adaptive) {
this.adaptive = adaptive;
}
public boolean isExo(int player) { public boolean isExo(int player) {
return getPlayer() == player && player == Players.EXO; return getPlayer() == player && player == Players.EXO;
} }

@ -27,7 +27,7 @@ import com.fongmi.android.tv.utils.Prefers;
@Database(entities = {Keep.class, Site.class, Track.class, Config.class, Device.class, History.class}, version = AppDatabase.VERSION) @Database(entities = {Keep.class, Site.class, Track.class, Config.class, Device.class, History.class}, version = AppDatabase.VERSION)
public abstract class AppDatabase extends RoomDatabase { public abstract class AppDatabase extends RoomDatabase {
public static final int VERSION = 23; public static final int VERSION = 24;
public static final String SYMBOL = "@@@"; public static final String SYMBOL = "@@@";
private static volatile AppDatabase instance; private static volatile AppDatabase instance;
@ -51,6 +51,7 @@ public abstract class AppDatabase extends RoomDatabase {
.addMigrations(MIGRATION_20_21) .addMigrations(MIGRATION_20_21)
.addMigrations(MIGRATION_21_22) .addMigrations(MIGRATION_21_22)
.addMigrations(MIGRATION_22_23) .addMigrations(MIGRATION_22_23)
.addMigrations(MIGRATION_23_24)
.allowMainThreadQueries() .allowMainThreadQueries()
.fallbackToDestructiveMigration() .fallbackToDestructiveMigration()
.build(); .build();
@ -158,4 +159,11 @@ public abstract class AppDatabase extends RoomDatabase {
if (Prefers.getPlayer() == 0) Prefers.putPlayer(2); if (Prefers.getPlayer() == 0) Prefers.putPlayer(2);
} }
}; };
static final Migration MIGRATION_23_24 = new Migration(23, 24) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE Track ADD COLUMN `adaptive` INTEGER NOT NULL DEFAULT 0");
}
};
} }

@ -17,4 +17,7 @@ public abstract class TrackDao extends BaseDao<Track> {
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
public abstract Long insert(Track item); public abstract Long insert(Track item);
@Query("DELETE FROM Track WHERE `key` = :key")
public abstract void delete(String key);
} }

@ -69,7 +69,9 @@ public class TrackAdapter extends RecyclerView.Adapter<TrackAdapter.ViewHolder>
@Override @Override
public void onClick(View view) { public void onClick(View view) {
mListener.onItemClick(mItems.get(getLayoutPosition()).toggle()); Track item = mItems.get(getLayoutPosition()).toggle();
notifyItemChanged(getLayoutPosition());
mListener.onItemClick(item);
} }
} }
} }

@ -84,6 +84,7 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic
if (trackGroup.getType() != type) continue; if (trackGroup.getType() != type) continue;
for (int j = 0; j < trackGroup.length; j++) { for (int j = 0; j < trackGroup.length; j++) {
Track item = new Track(type, provider.getTrackName(trackGroup.getTrackFormat(j))); Track item = new Track(type, provider.getTrackName(trackGroup.getTrackFormat(j)));
item.setAdaptive(trackGroup.isAdaptiveSupported());
item.setSelected(trackGroup.isTrackSelected(j)); item.setSelected(trackGroup.isTrackSelected(j));
item.setPlayer(player.getPlayer()); item.setPlayer(player.getPlayer());
item.setGroup(i); item.setGroup(i);
@ -111,6 +112,7 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic
public void onItemClick(Track item) { public void onItemClick(Track item) {
if (listener != null) listener.onTrackClick(item); if (listener != null) listener.onTrackClick(item);
player.setTrack(List.of(item)); player.setTrack(List.of(item));
if (item.isAdaptive()) return;
dismiss(); dismiss();
} }

Loading…
Cancel
Save