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?