![]() |
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? |
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 ...
|
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 21:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz