diff -Nru libprotocol-java-1.2/build.xml libprotocol-java-2.2/build.xml --- libprotocol-java-1.2/build.xml 2015-10-19 22:37:34.000000000 +0000 +++ libprotocol-java-2.2/build.xml 2015-11-07 10:38:06.000000000 +0000 @@ -3,9 +3,9 @@ - + - + diff -Nru libprotocol-java-1.2/changelog libprotocol-java-2.2/changelog --- libprotocol-java-1.2/changelog 2015-10-19 22:40:12.000000000 +0000 +++ libprotocol-java-2.2/changelog 2015-11-07 10:40:14.000000000 +0000 @@ -1,3 +1,15 @@ +protocoldruzy 2.2 : +bug fix pour upnp : N'affichait plus les appareils upnp à la deuxième recherche + +protocoldruzy 2.1 : +Envoie directe vers Chromecast + +protocoldruzy version 2 +protocol chromecast opérationnelle + +protocol version 1.3 : +refonte de l'api chromecast + protocol version 1.2 : upnp : fixage du port d'écoute udp diff -Nru libprotocol-java-1.2/debian/changelog libprotocol-java-2.2/debian/changelog --- libprotocol-java-1.2/debian/changelog 2015-10-22 23:58:57.000000000 +0000 +++ libprotocol-java-2.2/debian/changelog 2015-11-07 13:26:47.000000000 +0000 @@ -1,3 +1,27 @@ +libprotocol-java (2.2-0ubuntu1) wily; urgency=medium + + * bug fix upnp : N'affichait plus les appareils upnp à la deuxième recherche. + + -- Le Greneur Jonathan Sat, 07 Nov 2015 11:46:24 +0100 + +libprotocol-java (2.1-0ubuntu1) wily; urgency=medium + + * Gère le lancement direct sur Chromecast + + -- Le Greneur Jonathan Wed, 04 Nov 2015 17:53:48 +0100 + +libprotocol-java (2-0ubuntu1) wily; urgency=medium + + * protocol chromecast opérationnel + + -- Le Greneur Jonathan Tue, 03 Nov 2015 01:16:56 +0100 + +libprotocol-java (1.3-0ubuntu1) wily; urgency=medium + + * refonte api chromecast + + -- Le Greneur Jonathan Fri, 30 Oct 2015 03:17:44 +0100 + libprotocol-java (1.2-0ubuntu2) wily; urgency=medium * Compilation wily diff -Nru libprotocol-java-1.2/debian/control libprotocol-java-2.2/debian/control --- libprotocol-java-1.2/debian/control 2015-10-15 21:40:21.000000000 +0000 +++ libprotocol-java-2.2/debian/control 2015-11-03 00:18:16.000000000 +0000 @@ -1,7 +1,7 @@ Source: libprotocol-java Priority: optional Maintainer: Jonathan Le Greneur -Build-Depends: debhelper (>= 9), javahelper, ant, default-jdk, libclingcore-java, libseamlesshttp-java, libseamlessutil-java, libseamlessxml-java, libjmdns-java, libchromecast-java-api-v2-java, libdnsjava-java, libmdnsjava-java, libclingsupport-java, libreflections-java, libmvc-java, libserverdruzy-java, libupnpdruzy-java, libutilsdruzy-java +Build-Depends: debhelper (>= 9), javahelper, ant, default-jdk, libclingcore-java, libseamlesshttp-java, libseamlessutil-java, libseamlessxml-java, libjmdns-java, libdnsjava-java, libmdnsjava-java, libclingsupport-java, libreflections-java, libmvc-java, libserverdruzy-java, libupnpdruzy-java, libutilsdruzy-java, libchromecast-java Standards-Version: 3.9.5 Section: libs Homepage: https://github.com/druzy/protocol @@ -9,6 +9,6 @@ Package: libprotocol-java Section: libs Architecture: all -Depends: default-jre, libclingcore-java, libseamlesshttp-java, libseamlessutil-java, libseamlessxml-java, libjmdns-java, libchromecast-java-api-v2-java, libdnsjava-java, libmdnsjava-java, libclingsupport-java, libreflections-java, libmvc-java, libserverdruzy-java, libupnpdruzy-java, libutilsdruzy-java +Depends: default-jre, libclingcore-java, libseamlesshttp-java, libseamlessutil-java, libseamlessxml-java, libjmdns-java, libdnsjava-java, libmdnsjava-java, libclingsupport-java, libreflections-java, libmvc-java, libserverdruzy-java, libupnpdruzy-java, libutilsdruzy-java, libchromecast-java Description: Bibliothèque java de découverte de services upnp, airplay, chromecast diff -Nru libprotocol-java-1.2/debian/libprotocol-java.install libprotocol-java-2.2/debian/libprotocol-java.install --- libprotocol-java-1.2/debian/libprotocol-java.install 2015-10-19 22:57:59.000000000 +0000 +++ libprotocol-java-2.2/debian/libprotocol-java.install 2015-11-04 16:55:18.000000000 +0000 @@ -1 +1 @@ -jar/protocol-1.2.jar usr/share/java +jar/protocoldruzy-*.jar usr/share/java diff -Nru libprotocol-java-1.2/debian/libprotocol-java.links libprotocol-java-2.2/debian/libprotocol-java.links --- libprotocol-java-1.2/debian/libprotocol-java.links 2015-10-19 22:58:05.000000000 +0000 +++ libprotocol-java-2.2/debian/libprotocol-java.links 2015-11-07 10:48:51.000000000 +0000 @@ -1 +1 @@ -usr/share/java/protocol-1.2.jar usr/share/java/protocol.jar +usr/share/java/protocoldruzy-2.2.jar usr/share/java/protocoldruzy.jar diff -Nru libprotocol-java-1.2/druzy/protocol/AbstractRenderer.java libprotocol-java-2.2/druzy/protocol/AbstractRenderer.java --- libprotocol-java-1.2/druzy/protocol/AbstractRenderer.java 2015-09-30 10:14:41.000000000 +0000 +++ libprotocol-java-2.2/druzy/protocol/AbstractRenderer.java 2015-11-02 18:56:36.000000000 +0000 @@ -120,7 +120,7 @@ @Override public int getVolumeMax(){ - return 0; + return DEFAULT_VOLUME_MAX; } @Override diff -Nru libprotocol-java-1.2/druzy/protocol/AirplayRendererDiscoverer.java libprotocol-java-2.2/druzy/protocol/AirplayRendererDiscoverer.java --- libprotocol-java-1.2/druzy/protocol/AirplayRendererDiscoverer.java 2015-10-17 12:43:33.000000000 +0000 +++ libprotocol-java-2.2/druzy/protocol/AirplayRendererDiscoverer.java 2015-11-04 18:55:32.000000000 +0000 @@ -24,16 +24,22 @@ @Override public void serviceAdded(final ServiceEvent event) { - dns.requestServiceInfo(event.getType(), event.getInfo().getName(),1); + System.out.println("add"); + new Thread(){ + public void run(){ + dns.requestServiceInfo(event.getType(), event.getInfo().getName(),true); + } + }.start(); } @Override public void serviceRemoved(ServiceEvent event) { - + System.out.println("removed : "+event); } @Override public void serviceResolved(final ServiceEvent event) { + System.out.println("resolved"); new Thread(){ public void run(){ listener.deviceDiscovery(new AirplayRenderer(event.getInfo())); diff -Nru libprotocol-java-1.2/druzy/protocol/AirplayRenderer.java libprotocol-java-2.2/druzy/protocol/AirplayRenderer.java --- libprotocol-java-1.2/druzy/protocol/AirplayRenderer.java 2015-09-29 21:31:01.000000000 +0000 +++ libprotocol-java-2.2/druzy/protocol/AirplayRenderer.java 2015-11-05 22:16:37.000000000 +0000 @@ -9,6 +9,8 @@ private ServiceInfo info=null; private String protocol=null; + private String uuid=null; + private String macAdresse=null; public static final String AIRPLAY_ICON="druzy/protocol/image/airplay-icon.png"; public static final String ID_PROPERTY="deviceid"; @@ -46,7 +48,6 @@ @Override public void play() { - // TODO Auto-generated method stub } diff -Nru libprotocol-java-1.2/druzy/protocol/ChromecastRendererDiscoverer.java libprotocol-java-2.2/druzy/protocol/ChromecastRendererDiscoverer.java --- libprotocol-java-1.2/druzy/protocol/ChromecastRendererDiscoverer.java 2015-10-17 12:43:24.000000000 +0000 +++ libprotocol-java-2.2/druzy/protocol/ChromecastRendererDiscoverer.java 2015-11-04 11:18:12.000000000 +0000 @@ -1,133 +1,62 @@ package druzy.protocol; -import java.io.IOException; -import java.net.URI; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import org.xbill.DNS.Message; -import org.xbill.DNS.Record; -import org.xbill.DNS.ResolverListener; -import org.xbill.DNS.TXTRecord; -import org.xbill.mDNS.Browse; -import su.litvak.chromecast.api.v2.ChromeCast; +import druzy.chromecast.Bridge; +import druzy.chromecast.BridgeEvent; +import druzy.chromecast.BridgeListener; public class ChromecastRendererDiscoverer extends AbstractDiscoverer { - public static final String CHROMECAST_TYPE="_googlecast._tcp.local."; - public static final String ID="id"; - public static final String URI_ICON="ic"; - public static final String NAME="fn"; - - - public ChromecastRendererDiscoverer() { - // TODO Auto-generated constructor stub - } + public ChromecastRendererDiscoverer() {} @Override public void startDiscovery(int delay, final DiscoveryListener listener){ new Thread(){ public void run(){ - final Set castDiscovered=new HashSet(); - - Browse browse; - try { - browse = new Browse("_googlecast._tcp.local."); - browse.start(new ResolverListener(){ - - @Override - public void handleException(Object o, Exception e) { - e.printStackTrace(); - } - - @Override - public void receiveMessage(Object o, Message message) { - synchronized(castDiscovered){ - String id=null; - URI uriIcon=null; - String name=null; - //TXT - if (message.getSectionArray(3).length>0){ - Record record=message.getSectionArray(3)[0]; - if (record instanceof TXTRecord){ - TXTRecord txt=(TXTRecord)message.getSectionArray(3)[0]; - List listTxt=txt.getStrings(); - - - - //System.out.println(listTxt); - for (String str:listTxt){ - String key=str.substring(0,str.indexOf("=")); - String value=str.substring(str.indexOf("=")+1); - - switch(key){ - case ID : - id=value; - break; - - case URI_ICON: - uriIcon=URI.create(value); - break; - - case NAME: - name=value; - break; - - } - } - } - - if (!castDiscovered.contains(id)){ - castDiscovered.add(id); - //IP - String ip=message.getSectionArray(3)[2].rdataToString(); - - final String id2=id; - final String name2=name; - final URI uriIcon2=uriIcon; - - final ChromeCast cast=new ChromeCast(ip); - new Thread(){ - public void run(){ - listener.deviceDiscovery(new ChromecastRenderer(cast,id2,name2,uriIcon2)); - } - }.start(); - } - } - } - } - - - }); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - + Bridge b=new Bridge(Bridge.DISCOVERY); + b.exec(new BridgeListener(){ + public void newMessage(BridgeEvent event){ + + listener.deviceDiscovery(new ChromecastRenderer(event.getMessage().get("ip"),event.getMessage().get("name"))); + } + }); } }.start(); - } @Override - public void startDiscovery(int delay, String identifier, - DiscoveryListener listener) { - // TODO Auto-generated method stub - + public void startDiscovery(int delay, final String identifier, final DiscoveryListener listener) { + new Thread(){ + public void run(){ + Bridge b=new Bridge(Bridge.DISCOVERY); + b.exec(new BridgeListener(){ + public void newMessage(BridgeEvent event){ + if (event.getMessage().get("ip").equals(identifier)){ + listener.deviceDiscovery(new ChromecastRenderer(event.getMessage().get("ip"),event.getMessage().get("name"))); + } + } + }); + } + }.start(); } @Override public void stopDiscovery() { - // TODO Auto-generated method stub - } @Override public void restartDiscovery() { - // TODO Auto-generated method stub } - + public static void main(String[] args){ + new ChromecastRendererDiscoverer().startDiscovery(1000, new DiscoveryListener(){ + @Override + public void deviceDiscovery(Device d) { + + } + + }); + } + } diff -Nru libprotocol-java-1.2/druzy/protocol/ChromecastRenderer.java libprotocol-java-2.2/druzy/protocol/ChromecastRenderer.java --- libprotocol-java-1.2/druzy/protocol/ChromecastRenderer.java 2015-10-18 18:12:08.000000000 +0000 +++ libprotocol-java-2.2/druzy/protocol/ChromecastRenderer.java 2015-11-02 22:38:18.000000000 +0000 @@ -1,46 +1,80 @@ package druzy.protocol; +import java.beans.PropertyChangeEvent; import java.io.File; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; -import java.security.GeneralSecurityException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.sql.Time; import javax.swing.ImageIcon; +import druzy.chromecast.Bridge; +import druzy.chromecast.BridgeEvent; +import druzy.chromecast.BridgeListener; +import druzy.chromecast.WatchChromecast; import druzy.server.RestrictedFileServer; import druzy.utils.TimeUtils; -import su.litvak.chromecast.api.v2.ChromeCast; -import su.litvak.chromecast.api.v2.Status; - public class ChromecastRenderer extends AbstractRenderer { - private ChromeCast chromecast=null; private String identifier=null; private String name=null; - private ImageIcon icon=null; private String protocol=null; - private int iconPort=0; + private boolean play=false; + private boolean pause=false; + private boolean stop=false; + private Time duration=null; + private Time timePosition=null; + private int volume=100; + private boolean mute=false; + + private Bridge bridge=null; + private WatchChromecast watch=null; - public static final int HTTP_SERVER_PORT=8965; + //private int iconPort=8008; public static final String APP_ID_VIDEO="CC1AD845"; + public static final String CHROMECAST_ICON="druzy/protocol/image/chromecast-icon.png"; - public ChromecastRenderer(ChromeCast chromecast,String identifier, String name, URI icon){ + public ChromecastRenderer(String identifier, String name){ super(); this.protocol="chromecast"; - this.iconPort=8008; - this.chromecast=chromecast; this.identifier=identifier; this.name=name; - try { - this.icon=new ImageIcon(new URL("http://"+chromecast.getAddress()+":"+iconPort+icon.toString())); - } catch (MalformedURLException e) { - e.printStackTrace(); - } + this.bridge=new Bridge(Bridge.BRIDGE,identifier); + bridge.exec(new BridgeListener(){ + + @Override + public void newMessage(BridgeEvent event) { + String ask=event.getMessage().get("ask"); + switch(ask){ + case "media_status": + //duration + float f=Float.parseFloat(event.getMessage().get("duration")); + ChromecastRenderer.this.setDurationHimself(TimeUtils.secondsToTime((int)f)); + + //current_time + f=Float.parseFloat(event.getMessage().get("current_time")); + ChromecastRenderer.this.setTimePositionHimself(TimeUtils.secondsToTime((int)f)); + + //player_state + String playerState=event.getMessage().get("player_state"); + if (playerState.equals("PLAYING")){ + ChromecastRenderer.this.setPlay(true); + }else if (playerState.equals("PAUSED")){ + ChromecastRenderer.this.setPause(true); + } + + //volume + f=Float.parseFloat(event.getMessage().get("volume_level"))*100; + ChromecastRenderer.this.setVolumeHimself((int)f); + + } + } + + }); + duration=Time.valueOf("00:00:00"); + timePosition=Time.valueOf("00:00:00"); } @Override @@ -50,7 +84,9 @@ @Override public void setIdentifier(String identifier) { + String old=this.identifier; this.identifier=identifier; + firePropertyChange(new PropertyChangeEvent(this,"identifier",old,identifier)); } @Override @@ -60,7 +96,9 @@ @Override public void setProtocol(String protocol) { + String old=this.protocol; this.protocol=protocol; + firePropertyChange(new PropertyChangeEvent(this,"protocol",old,protocol)); } @Override @@ -70,91 +108,175 @@ @Override public void setName(String name) { + String old=this.name; this.name=name; + firePropertyChange(new PropertyChangeEvent(this,"name",old,name)); } @Override public ImageIcon getIcon() { - return icon; + return new ImageIcon(ClassLoader.getSystemResource(CHROMECAST_ICON)); } @Override - public void setIcon(ImageIcon icon) { - this.icon=icon; + public void shutdown(){ + stop(); + bridge.sendMessage("quit_app"); + bridge.sendMessage("exit"); } - + @Override public void play() { - try { - System.out.println("avant play"); - if (!chromecast.isConnected()) chromecast.connect(); - if (chromecast.isAppAvailable(APP_ID_VIDEO)){ - if (!chromecast.isAppRunning(APP_ID_VIDEO)) chromecast.launchApp(APP_ID_VIDEO); - chromecast.play(); - System.out.println("aès play"); - } + bridge.sendMessage("play"); + setPlay(true); + } + + @Override + public boolean isPlay(){ + return play; + } + + private void setPlay(boolean play){ + if (play){ + setPause(false); + setStop(false); + } - } catch (IOException e) { - e.printStackTrace(); - } catch (GeneralSecurityException e) { - e.printStackTrace(); + if (this.play!=play){ + boolean old=this.play; + this.play=play; + firePropertyChange(new PropertyChangeEvent(this,"play",old,play)); } - } - + @Override public void pause() { - try { - chromecast.pause(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + bridge.sendMessage("pause"); + setPause(true); + } + + @Override + public boolean isPause(){return pause;} + + private void setPause(boolean pause){ + if (pause){ + setPlay(false); + } + + if (this.pause!=pause){ + boolean old=this.pause; + this.pause=pause; + firePropertyChange(new PropertyChangeEvent(this,"pause",old,pause)); } } @Override public void stop() { - try { - chromecast.stopApp(); - } catch (IOException e) { - e.printStackTrace(); - } - + stopWatch(); + bridge.sendMessage("stop"); + setStop(true); } @Override - public boolean send(File file) { - try { - if (!chromecast.isConnected()) chromecast.connect(); - - Status status=chromecast.getStatus(); - if (chromecast.isAppAvailable(APP_ID_VIDEO) && !status.isAppRunning(APP_ID_VIDEO)){ - chromecast.launchApp(APP_ID_VIDEO); - } - System.out.println("dans send"); - RestrictedFileServer.getInstance(HTTP_SERVER_PORT).addAuthorizedFile(file); - if (!RestrictedFileServer.getInstance(HTTP_SERVER_PORT).isStarting()) RestrictedFileServer.getInstance(HTTP_SERVER_PORT).start(); - chromecast.load(RestrictedFileServer.getInstance(HTTP_SERVER_PORT).toString()+file.getAbsolutePath()); - System.out.println("après load"); + public boolean isStop(){return stop;} + + private void setStop(boolean stop){ + if (stop){ + setPlay(false); + setPause(false); + } - } catch (IOException | GeneralSecurityException e) { + if (this.stop!=stop){ + boolean old=this.stop; + this.stop=stop; + firePropertyChange(new PropertyChangeEvent(this,"stop",old,stop)); + } + } + + @Override + public boolean send(final File file) { + if (!RestrictedFileServer.getInstance(PORT_FILE).isStarting()) RestrictedFileServer.getInstance(PORT_FILE).start(); + RestrictedFileServer.getInstance(PORT_FILE).addAuthorizedFile(file); + String url=RestrictedFileServer.getInstance(PORT_FILE).toString(); + try { + url=url+URLEncoder.encode(file.getAbsolutePath(),"utf-8"); + } catch (UnsupportedEncodingException e) { e.printStackTrace(); return false; } - + bridge.sendMessage("send",url,"video/mp4"); + startWatch(); return true; } @Override public Time getDuration(){ - try { - System.out.println(chromecast.getMediaStatus()); - if (chromecast.getMediaStatus()==null) return TimeUtils.secondsToTime(0); - else return TimeUtils.secondsToTime(chromecast.getMediaStatus().media.duration.intValue()); - } catch (IOException e) { - e.printStackTrace(); - return TimeUtils.secondsToTime(0); + return duration; + } + + private void setDurationHimself(Time duration){ + Time old=this.duration; + this.duration=duration; + firePropertyChange(new PropertyChangeEvent(this,"duration",old,duration)); + } + + public Time getTimePosition() { + return timePosition; + } + + @Override + public void setTimePosition(Time timePosition) { + bridge.sendMessage("seek",String.valueOf(TimeUtils.timeToSeconds(timePosition))); + + setTimePositionHimself(timePosition); + } + + private void setTimePositionHimself(Time timePosition){ + if (!this.timePosition.equals(timePosition)){ + Time old=this.timePosition; + this.timePosition = timePosition; + firePropertyChange(new PropertyChangeEvent(this,"timePosition",old,timePosition)); } + } + + @Override + public int getVolume(){return volume;} + + @Override + public void setVolume(int volume){ + System.out.println(String.valueOf(volume/100.0)); + bridge.sendMessage("volume",String.valueOf(volume/100.0)); + + setVolumeHimself(volume); + } + + private void setVolumeHimself(int volume){ + int old=volume; + this.volume=volume; + firePropertyChange(new PropertyChangeEvent(this,"volume",old,volume)); + } + + public boolean isMute(){ + return mute; + } + + @Override + public void setMute(boolean mute){ + setMuteHimself(mute); + } + + private void setMuteHimself(boolean mute){ + boolean old=this.mute; + this.mute=mute; + firePropertyChange(new PropertyChangeEvent(this,"mute",old,mute)); + } + + private void startWatch(){ + watch=new WatchChromecast(bridge); + watch.start(); + } + private void stopWatch(){ + if (watch!=null) watch.interrupt(); } -} +} \ No newline at end of file diff -Nru libprotocol-java-1.2/druzy/protocol/DiscovererFactory.java libprotocol-java-2.2/druzy/protocol/DiscovererFactory.java --- libprotocol-java-1.2/druzy/protocol/DiscovererFactory.java 2015-10-19 10:29:11.000000000 +0000 +++ libprotocol-java-2.2/druzy/protocol/DiscovererFactory.java 2015-10-25 00:46:44.000000000 +0000 @@ -6,6 +6,8 @@ import org.reflections.Reflections; +import javassist.Modifier; + public class DiscovererFactory { private DiscovererFactory() { } @@ -14,10 +16,12 @@ ArrayList ret=new ArrayList(); Reflections reflect=new Reflections("druzy.protocol"); + Set> set=reflect.getSubTypesOf(Discoverer.class); for (Class disco:set){ - if (!disco.equals(AbstractDiscoverer.class)){ + int mod=disco.getModifiers(); + if (!Modifier.isAbstract(mod) && !Modifier.isInterface(mod)){ try { ret.add(disco.newInstance()); } catch (Exception e) { diff -Nru libprotocol-java-1.2/druzy/protocol/Global.java libprotocol-java-2.2/druzy/protocol/Global.java --- libprotocol-java-1.2/druzy/protocol/Global.java 2015-10-19 22:36:08.000000000 +0000 +++ libprotocol-java-2.2/druzy/protocol/Global.java 2015-11-07 10:37:48.000000000 +0000 @@ -4,7 +4,7 @@ public class Global { - public static final Version VERSION=new Version("1.2"); + public static final Version VERSION=new Version("2.2"); private Global() {} Binary files /tmp/tmpgv2Lo8/nNwNBMDtAX/libprotocol-java-1.2/druzy/protocol/image/chromecast-icon.png and /tmp/tmpgv2Lo8/nuvd8whMrm/libprotocol-java-2.2/druzy/protocol/image/chromecast-icon.png differ diff -Nru libprotocol-java-1.2/druzy/protocol/Renderer.java libprotocol-java-2.2/druzy/protocol/Renderer.java --- libprotocol-java-1.2/druzy/protocol/Renderer.java 2015-09-30 10:14:35.000000000 +0000 +++ libprotocol-java-2.2/druzy/protocol/Renderer.java 2015-10-29 15:27:12.000000000 +0000 @@ -8,6 +8,8 @@ public interface Renderer extends Device,Model,FileFilter { + public static final int PORT_FILE=18041; + public void play(); public boolean isPlay(); public void pause(); diff -Nru libprotocol-java-1.2/druzy/protocol/UpnpRendererDiscoverer.java libprotocol-java-2.2/druzy/protocol/UpnpRendererDiscoverer.java --- libprotocol-java-1.2/druzy/protocol/UpnpRendererDiscoverer.java 2015-10-19 22:49:31.000000000 +0000 +++ libprotocol-java-2.2/druzy/protocol/UpnpRendererDiscoverer.java 2015-11-07 09:59:39.000000000 +0000 @@ -85,15 +85,17 @@ @Override public void remoteDeviceAdded(Registry registry, RemoteDevice device){ - listener.deviceDiscovery(new UpnpRenderer(device,upnpService, portFile)); + listener.deviceDiscovery(new UpnpRenderer(device,upnpService)); }; }; - + for (RemoteDevice device : upnpService.getRegistry().getRemoteDevices()){ + if (device.getType().equals(new DeviceType(UPNP_NAMESPACE,MEDIA_RENDERER_TYPE))){ + listener.deviceDiscovery(new UpnpRenderer(device,upnpService)); + } + } upnpService.getRegistry().addListener(registryListener); upnpService.getControlPoint().search(MEDIA_RENDERER_HEADER,delay); - - } @Override @@ -106,7 +108,7 @@ @Override public void remoteDeviceAdded(Registry registry, RemoteDevice device){ - listener.deviceDiscovery(new UpnpRenderer(device,upnpService,portFile)); + listener.deviceDiscovery(new UpnpRenderer(device,upnpService)); }; }; @@ -115,7 +117,7 @@ upnpService.getControlPoint().search(new UDNHeader(new UDN(identifier)),delay); }else{ - listener.deviceDiscovery(new UpnpRenderer(d,upnpService,portFile)); + listener.deviceDiscovery(new UpnpRenderer(d,upnpService)); } } diff -Nru libprotocol-java-1.2/druzy/protocol/UpnpRenderer.java libprotocol-java-2.2/druzy/protocol/UpnpRenderer.java --- libprotocol-java-1.2/druzy/protocol/UpnpRenderer.java 2015-10-17 13:18:28.000000000 +0000 +++ libprotocol-java-2.2/druzy/protocol/UpnpRenderer.java 2015-11-02 19:02:19.000000000 +0000 @@ -43,6 +43,7 @@ private RemoteService renderingControl=null; private UpnpService upnpService=null; private int avTransportId=-1; + @SuppressWarnings("unused") private int connectionId=0; private int rcsId=-1; private WatchService watchPositionInfo=null; @@ -56,11 +57,10 @@ private Time timePosition=null; private int volume=0; private boolean mute=false; - private int portFile=0; private String sink=null; - public UpnpRenderer(RemoteDevice remoteDevice, UpnpService upnpService,int portFile) { + public UpnpRenderer(RemoteDevice remoteDevice, UpnpService upnpService) { super(); this.remoteDevice=remoteDevice; this.protocol="upnp"; @@ -70,7 +70,6 @@ this.upnpService=upnpService; this.duration=Time.valueOf("00:00:00"); this.timePosition=Time.valueOf("00:00:00"); - this.portFile=portFile; } @Override @@ -158,8 +157,6 @@ firePropertyChange(new PropertyChangeEvent(this,"pause",old,pause)); } } - - @Override public void stop() { @@ -221,16 +218,16 @@ //création du metadata du fichier DIDLContent content=new DIDLContent(); Item item; - item = new VideoItem(file.getAbsolutePath(),file.getParent(),file.getName(),"JMita",new Res(new ProtocolInfo(askProtocol),file.length(),RestrictedFileServer.getInstance(portFile).toString()+file.getAbsolutePath())); + item = new VideoItem(file.getAbsolutePath(),file.getParent(),file.getName(),"JMita",new Res(new ProtocolInfo(askProtocol),file.length(),RestrictedFileServer.getInstance(PORT_FILE).toString()+file.getAbsolutePath())); content.addItem(item); //envoie de l'uri et démarrage du serveur http pour envoyer la vidéo - RestrictedFileServer.getInstance(portFile).addAuthorizedFile(file); - if (!RestrictedFileServer.getInstance(portFile).isStarting()) RestrictedFileServer.getInstance(portFile).start(); + RestrictedFileServer.getInstance(PORT_FILE).addAuthorizedFile(file); + if (!RestrictedFileServer.getInstance(PORT_FILE).isStarting()) RestrictedFileServer.getInstance(PORT_FILE).start(); ActionInvocation invocSetUri=new ActionInvocation(avTransport.getAction("SetAVTransportURI")); invocSetUri.setInput("InstanceID",String.valueOf(avTransportId)); - invocSetUri.setInput("CurrentURI", RestrictedFileServer.getInstance(portFile).toString()+file.getAbsolutePath()); + invocSetUri.setInput("CurrentURI", RestrictedFileServer.getInstance(PORT_FILE).toString()+file.getAbsolutePath()); try { invocSetUri.setInput("CurrentURIMetaData",new DIDLParser().generate(content)); } catch (Exception e) {