From 00cb1123339b2e62891872efa867bcbe54760da3 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Tue, 4 Nov 2014 21:43:19 -0800 Subject: Change to stable since alpha seems to not even start --- libs/cling-core-1.0.5.jar | Bin 0 -> 551922 bytes libs/cling-core-2.0-alpha3.jar | Bin 683382 -> 0 bytes libs/cling-support-1.0.5.jar | Bin 0 -> 359154 bytes libs/teleal-common-1.0.13.jar | Bin 0 -> 231831 bytes .../dsub/provider/DLNARouteProvider.java | 57 +++++++++++++++------ 5 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 libs/cling-core-1.0.5.jar delete mode 100644 libs/cling-core-2.0-alpha3.jar create mode 100644 libs/cling-support-1.0.5.jar create mode 100644 libs/teleal-common-1.0.13.jar diff --git a/libs/cling-core-1.0.5.jar b/libs/cling-core-1.0.5.jar new file mode 100644 index 00000000..8079f329 Binary files /dev/null and b/libs/cling-core-1.0.5.jar differ diff --git a/libs/cling-core-2.0-alpha3.jar b/libs/cling-core-2.0-alpha3.jar deleted file mode 100644 index 41bca580..00000000 Binary files a/libs/cling-core-2.0-alpha3.jar and /dev/null differ diff --git a/libs/cling-support-1.0.5.jar b/libs/cling-support-1.0.5.jar new file mode 100644 index 00000000..a0ca6363 Binary files /dev/null and b/libs/cling-support-1.0.5.jar differ diff --git a/libs/teleal-common-1.0.13.jar b/libs/teleal-common-1.0.13.jar new file mode 100644 index 00000000..2d6403ef Binary files /dev/null and b/libs/teleal-common-1.0.13.jar differ diff --git a/src/github/daneren2005/dsub/provider/DLNARouteProvider.java b/src/github/daneren2005/dsub/provider/DLNARouteProvider.java index 11c29d28..d86ebf20 100644 --- a/src/github/daneren2005/dsub/provider/DLNARouteProvider.java +++ b/src/github/daneren2005/dsub/provider/DLNARouteProvider.java @@ -33,15 +33,21 @@ import android.support.v7.media.MediaRouteProvider; import android.support.v7.media.MediaRouteProviderDescriptor; import android.util.Log; -import org.fourthline.cling.android.AndroidUpnpService; -import org.fourthline.cling.android.AndroidUpnpServiceImpl; -import org.fourthline.cling.model.meta.Device; -import org.fourthline.cling.model.meta.LocalDevice; -import org.fourthline.cling.model.meta.RemoteDevice; -import org.fourthline.cling.registry.Registry; -import org.fourthline.cling.registry.RegistryListener; +import org.teleal.cling.android.AndroidUpnpService; +import org.teleal.cling.android.AndroidUpnpServiceImpl; +import org.teleal.cling.model.action.ActionInvocation; +import org.teleal.cling.model.message.UpnpResponse; +import org.teleal.cling.model.meta.Device; +import org.teleal.cling.model.meta.LocalDevice; +import org.teleal.cling.model.meta.RemoteDevice; +import org.teleal.cling.model.meta.StateVariable; +import org.teleal.cling.model.meta.StateVariableAllowedValueRange; +import org.teleal.cling.registry.Registry; +import org.teleal.cling.registry.RegistryListener; +import org.teleal.cling.support.renderingcontrol.callback.GetVolume; import java.util.HashMap; +import java.util.List; import java.util.Map; import github.daneren2005.dsub.domain.DLNADevice; @@ -128,7 +134,7 @@ public class DLNARouteProvider extends MediaRouteProvider { dlnaService = null; } }; - context.bindService(new Intent(context, AndroidUpnpServiceImpl.class), dlnaServiceConnection,Context.BIND_AUTO_CREATE); + context.bindService(new Intent(context, AndroidUpnpServiceImpl.class), dlnaServiceConnection, Context.BIND_AUTO_CREATE); } private void broadcastDescriptors() { @@ -172,16 +178,35 @@ public class DLNARouteProvider extends MediaRouteProvider { return new DLNARouteController(downloadService); } - private void deviceAdded(Device device) { + private void deviceAdded(final Device device) { + final org.teleal.cling.model.meta.Service renderingControl = null; + if(device.getType().getType().equals("MediaRenderer") && device instanceof RemoteDevice) { - String id = device.getIdentity().getUdn().toString(); - String name = device.getDetails().getFriendlyName(); - String displayName = device.getDisplayString(); - Log.d(TAG, displayName); + dlnaService.getControlPoint().execute(new GetVolume(renderingControl) { + @Override + public void received(ActionInvocation actionInvocation, int currentVolume) { + int maxVolume = 100; + StateVariable volume = renderingControl.getStateVariable("Volume"); + if(volume != null) { + StateVariableAllowedValueRange volumeRange = volume.getTypeDetails().getAllowedValueRange(); + maxVolume = (int) volumeRange.getMaximum(); + } - DLNADevice newDevice = new DLNADevice(id, name, displayName, 0, 10); - devices.put(id, newDevice); - broadcastDescriptors(); + String id = device.getIdentity().getUdn().toString(); + String name = device.getDetails().getFriendlyName(); + String displayName = device.getDisplayString(); + + DLNADevice newDevice = new DLNADevice(id, name, displayName, currentVolume, maxVolume); + devices.put(id, newDevice); + broadcastDescriptors(); + } + + @Override + public void failure(ActionInvocation actionInvocation, UpnpResponse upnpResponse, String s) { + Log.w(TAG, "Failed to get default volume for DLNA route"); + Log.w(TAG, "Reason: " + s); + } + }); } } private void deviceRemoved(Device device) { -- cgit v1.2.3