mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-18 10:32:43 +00:00
Fix duplicate programs when starting games
This commit is contained in:
parent
ee46906376
commit
dc984e8679
@ -144,7 +144,16 @@ public class TvChannelHelper {
|
|||||||
.setPosterArtAspectRatio(ASPECT_RATIO_MOVIE_POSTER)
|
.setPosterArtAspectRatio(ASPECT_RATIO_MOVIE_POSTER)
|
||||||
.setPosterArtUri(resourceURI)
|
.setPosterArtUri(resourceURI)
|
||||||
.setIntent(i)
|
.setIntent(i)
|
||||||
.setInternalProviderId(appId);
|
.setInternalProviderId(appId)
|
||||||
|
// Weight should increase each time we run the game
|
||||||
|
.setWeight((int)((System.currentTimeMillis() - 1500000000000L) / 1000));
|
||||||
|
|
||||||
|
Long programId = getProgramId(channelId, appId);
|
||||||
|
if (programId != null) {
|
||||||
|
context.getContentResolver().update(TvContract.buildPreviewProgramUri(programId),
|
||||||
|
builder.toContentValues(), null, null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
context.getContentResolver().insert(TvContract.PreviewPrograms.CONTENT_URI,
|
context.getContentResolver().insert(TvContract.PreviewPrograms.CONTENT_URI,
|
||||||
builder.toContentValues());
|
builder.toContentValues());
|
||||||
@ -170,16 +179,13 @@ public class TvChannelHelper {
|
|||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.O)
|
@TargetApi(Build.VERSION_CODES.O)
|
||||||
private Long getChannelId(String computerUuid) {
|
private Long getChannelId(String computerUuid) {
|
||||||
Uri uri = TvContract.Channels.CONTENT_URI;
|
try (Cursor cursor = context.getContentResolver().query(
|
||||||
final String[] CHANNEL_PROJECTION = {TvContract.Channels._ID, TvContract.Channels.COLUMN_INTERNAL_PROVIDER_ID};
|
TvContract.Channels.CONTENT_URI,
|
||||||
|
new String[] {TvContract.Channels._ID, TvContract.Channels.COLUMN_INTERNAL_PROVIDER_ID},
|
||||||
Cursor cursor = context.getContentResolver().query(uri,
|
|
||||||
CHANNEL_PROJECTION,
|
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null);
|
null)) {
|
||||||
try {
|
if (cursor == null || cursor.getCount() == 0) {
|
||||||
if (cursor == null) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
while (cursor.moveToNext()) {
|
while (cursor.moveToNext()) {
|
||||||
@ -190,10 +196,28 @@ public class TvChannelHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
} finally {
|
}
|
||||||
if (cursor != null) {
|
}
|
||||||
cursor.close();
|
|
||||||
|
@TargetApi(Build.VERSION_CODES.O)
|
||||||
|
private Long getProgramId(long channelId, String appId) {
|
||||||
|
try (Cursor cursor = context.getContentResolver().query(
|
||||||
|
TvContract.buildPreviewProgramsUriForChannel(channelId),
|
||||||
|
new String[] {TvContract.PreviewPrograms._ID, TvContract.PreviewPrograms.COLUMN_INTERNAL_PROVIDER_ID},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null)) {
|
||||||
|
if (cursor == null || cursor.getCount() == 0) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
while (cursor.moveToNext()) {
|
||||||
|
String internalProviderId = cursor.getString(INTERNAL_PROVIDER_ID_INDEX);
|
||||||
|
if (appId.equals(internalProviderId)) {
|
||||||
|
return cursor.getLong(ID_INDEX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,7 +230,7 @@ public class TvChannelHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.O)
|
@TargetApi(Build.VERSION_CODES.O)
|
||||||
public boolean isAndroidTV() {
|
private boolean isAndroidTV() {
|
||||||
return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK);
|
return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,6 +280,11 @@ public class TvChannelHelper {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PreviewProgramBuilder setWeight(int weight) {
|
||||||
|
mValues.put(TvContract.PreviewPrograms.COLUMN_WEIGHT, weight);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public ContentValues toContentValues() {
|
public ContentValues toContentValues() {
|
||||||
return new ContentValues(mValues);
|
return new ContentValues(mValues);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user