Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Android Daten empfangen über Wifi von Delphi Windows Projekt (https://www.delphipraxis.net/168293-android-daten-empfangen-ueber-wifi-von-delphi-windows-projekt.html)

Cylence 14. Mai 2012 08:37

Android Daten empfangen über Wifi von Delphi Windows Projekt
 
Hi,

ich habe einen Windows Mediaplayer programmiert in Delphi, und habe nun eine Remote App für Android programmiert.
Die Steuerung des Players so geht schonmal ohne Probleme.
Nun möchte ich die ganze Playliste vom Windows Rechner beim Android Handy empfangen, Das geht aber nicht, ich habs einmal am stück, alle pfade der playliste hintereinander mit ; getrennt versucht, aber da hängt sich die app gleich ganz auf, wenn es mehr als 2 Pfade hintereinander sind.
Wenn ich erstmal sende PLAYLISTSTART, dann jedes einzelne empfange und so lange die schleife laufen lass bis PLAYLISTEND kommt, da geht einfach überhaupt nichts, nicht einmal einen bekomme ich so.
Also vom senden her vom Windwos Rechner aus in Delphi is kein Problem denke ich, der Fehler muß beim Empfänger sein, also im Android code, und den hier nutze ich:

Delphi-Quellcode:

        public void StartReceiverX(final String Message) {
                       try{
                           int port = 1778;          
                           Boolean GotMessage = false;
                           //InetAddress serv_address = InetAddress.getByName(newip);
                           DatagramSocket serversocket = new DatagramSocket(port);//, serv_address);
                           serversocket.setReuseAddress(true);
                           serversocket.setBroadcast(true);
                           Looper.prepare();
                           TimeOut = 0;
                           send_btn(Message);  //hier sende ich kurz starte playlist transfer an delphi program
                           while (GotMessage == false) { 
                             try{   
                                byte [] buf = new byte[32768];  
                              DatagramPacket packet= new DatagramPacket(buf, buf.length);
                                 packet.setLength(buf.length);   
                                 serversocket.receive(packet);                          
                             String ReceivedMessage = new String(packet.getData(), 0, packet.getLength());                                
                       //---------ALLE AM STÜCK---------------------------------------------------------------------------- 
                             int i = ReceivedMessage.indexOf("MRPLAYLISTEND");
                            if (i > -1) {
                               if (ReceivedMessage.toString().indexOf(";") > -1) {
                                    GotMessage = true;   
                                 MRUtils.ReceivedList.clear();
                                 MRUtils.appendLog("MRPLAYLIST Receiving ");
                                 String[] separated = ReceivedMessage.toString().split(";");
                                 for(int x=0; x < separated.length; x++){   
                                      if (separated[x].indexOf("MRPLAYLISTEND") > -1) { separated[x] = separated[x].replaceAll("MRPLAYLISTEND", ""); }
                                    MRUtils.ReceivedList.add(separated[x]);
                                    MRUtils.appendLog("added "+separated[x]);                                  
                                 }     
                               }
                            }
                          //----------ALLE EINZELN NACHEINANDER---------------------------------------------------------------------------                             
                            i = ReceivedMessage.indexOf("MRPLAYLISTSTART");
                            if (i > -1) {
                               MRUtils.ReceivedList.clear();
                               ReceivingPlaylist = true;
                               MRUtils.appendLog("MRPLAYLIST START ");                              
                            }   
                             i = ReceivedMessage.indexOf("MRPLAYLISTEND");
                            if (i > -1) {
                               GotMessage = true;   
                               MRUtils.appendLog("MRPLAYLIST Receiving sucessfully ended");
                               ReceivingPlaylist = false;
                            }                            
                            if (ReceivingPlaylist) {
                               i = ReceivedMessage.indexOf("MRPLAYLISTEND");
                               if (i == -1) {
                                 i = ReceivedMessage.indexOf("MRPLAYLISTSTART");
                                 if (i == -1) {
                                   MRUtils.appendLog("MRPLAYLIST Receiving "+ ReceivedMessage.toString());
                                   MRUtils.ReceivedList.add(ReceivedMessage.toString());
                                 }
                               }                               
                            }   
                            if (ReceivingPlaylist) {
                              TimeOut = TimeOut +1;
                              if (TimeOut >= 2000) {
                                   GotMessage = true;   
                                 MRUtils.appendLog("MRPLAYLIST Receiving Timed Out");
                                 ReceivingPlaylist = false;
                              }     
                            }
                          //-------------------------------------------------------------------------------------
                            }             
                            catch (Exception e){                                 
                                possibleCover = false;
                            }
                          } //Schleifenende
                          serversocket.close();
                        }             
                        catch (Exception e){
                        }          
        }

jemand ne idee was ich falsch mache?

mjustin 14. Mai 2012 10:40

AW: Android Daten empfangen über Wifi von Delphi Windows Projekt
 
Eventuell hilft es den Code der die Datenübertragung durchführt isoliert in einer normalen VM unter der Java IDE auszuführen und dort zu debuggen. Das Einkreisen der Ursache ist dann schneller als bei einer Android Emulation ...

Cylence 14. Mai 2012 10:54

AW: Android Daten empfangen über Wifi von Delphi Windows Projekt
 
Hi, ich verwende das motodev studio, aber da geht wlan in der vm nich...
gibts da einen Trick wie man das zum laufen bringt?

ich kann ja auch schon einzelne kurze Strings vom Windows Rechner empfangen und auch senden, der aktuell laufende Titel zb geht ohne Probleme, nur eben wenns länger/mehr wird, dann gehts nicht.
In den Samples die ich gefunden habe, ist es eben so beschrieben das man den Receiver in einer Schleife laufen lässt, und vom Sender selbst Begin End sendet, und darauf reagiert, aber das geht eben nicht... zumindest so wies ich gemacht hab...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz