@@ -252,6 +252,20 @@ public void onApplicationDisconnected(int errorCode) {
252
252
return Service .START_NOT_STICKY ;
253
253
}
254
254
255
+ if (castPlayerManager .isSubscribed ()) {
256
+ if (!client .machineIdentifier .equals (castPlayerManager .mClient .machineIdentifier )) {
257
+ Logger .d ("Subscribed to a chromecast but need to play on a different client." );
258
+ castPlayerManager .unsubscribe ();
259
+ }
260
+ } else if (plexSubscription .isSubscribed ()) {
261
+ // Chromecast clients don't have a machine identifier, so if the selected client doesn't have one, it's
262
+ // a Chromecast, and we're already subscribed to a non-chromecast, so unsubscribe.
263
+ if (client .machineIdentifier == null || !client .machineIdentifier .equals (plexSubscription .getClient ().machineIdentifier )) {
264
+ Logger .d ("Subscribed to non-chromecast client but need to play on a different client." );
265
+ plexSubscription .unsubscribe ();
266
+ }
267
+ }
268
+
255
269
// if(client.isCastClient)
256
270
// castPlayerManager.subscribe(client);
257
271
if (queries .size () > 0 ) {
@@ -297,21 +311,21 @@ private void startup() {
297
311
298
312
299
313
Logger .d ("Starting up with query string: %s" , queryText );
300
- tracks = new ArrayList <PlexTrack >();
301
- videos = new ArrayList <PlexVideo >();
302
- shows = new ArrayList <PlexDirectory >();
314
+ tracks = new ArrayList <>();
315
+ videos = new ArrayList <>();
316
+ shows = new ArrayList <>();
303
317
304
318
final PlexServer defaultServer = VoiceControlForPlexApplication .gsonRead .fromJson (VoiceControlForPlexApplication .getInstance ().prefs .get (Preferences .SERVER , "" ), PlexServer .class );
305
319
if (specifiedServer != null && client != null && !specifiedServer .name .equals (getResources ().getString (R .string .scan_all ))) {
306
320
// got a specified server and mClient from a shortcut
307
- Logger .d ("Got hardcoded server and mClient from shortcut with %d music sections" , specifiedServer .musicSections .size ());
308
- plexmediaServers = new ConcurrentHashMap <String , PlexServer >();
321
+ Logger .d ("Got hardcoded server and client from shortcut with %d music sections" , specifiedServer .musicSections .size ());
322
+ plexmediaServers = new ConcurrentHashMap <>();
309
323
plexmediaServers .put (specifiedServer .name , specifiedServer );
310
324
setClient ();
311
325
} else if (specifiedServer == null && defaultServer != null && !defaultServer .name .equals (getResources ().getString (R .string .scan_all ))) {
312
326
// Use the server specified in the main settings
313
327
Logger .d ("Using server and client specified in main settings" );
314
- plexmediaServers = new ConcurrentHashMap <String , PlexServer >();
328
+ plexmediaServers = new ConcurrentHashMap <>();
315
329
plexmediaServers .put (defaultServer .name , defaultServer );
316
330
setClient ();
317
331
} else {
0 commit comments