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 extends Discoverer> 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) {