UDP メッセージを受信するアプリケーションを作成しています。私が抱えている問題は、メッセージActivity
を受信した後にのみ表示されるため、の表示に関するものです。メッセージのリッスンを開始するものがありますが、UDP
これが問題だと思います。onCreate
startUdp()
UDP
Activity
の読み込みがいつ終了したか、またはどこから聞き始めるべきかを知る方法はありますか?
私のActivity
コード:
public class UDPActivity extends Activity {
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_UDP);
// Setup the UDP stuff
startUDP();
System.out.println( "Sent Response of ");
TextView rowLetter = (TextView) findViewById(R.id.rowLetter);
TextView seatNumber = (TextView) findViewById(R.id.seatNumber);
Button btnClose = (Button) findViewById(R.id.btnClose);
Intent i = getIntent();
// Binding Click event to Button
btnClose.setOnClickListener( new View.OnClickListener() {
public void onClick(View arg0) {
//Closing SecondScreen Activity
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_make_light, menu);
return true;
}
private static final int UDP_SERVER_PORT = 12345;
private static final int MAX_UDP_DATAGRAM_LEN = 1500;
private void startUDP() {
Log.d("UDP", "S: Connecting...");
String lText;
byte[] lMsg = new byte[MAX_UDP_DATAGRAM_LEN];
DatagramSocket ds = null;
while (true) {
try {
ds = new DatagramSocket(UDP_SERVER_PORT);
//disable timeout for testing
//ds.setSoTimeout(100000);
DatagramPacket dp = new DatagramPacket(lMsg, lMsg.length);
Log.d("UDP", "S: Receiving...");
ds.receive(dp);
lText = new String(lMsg, 0, dp.getLength());
Log.i("UDP packet received", "S: Recieved '" + lText);
textView = (TextView) findViewById(R.id.text1);
textView.setText(lText);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ds != null) {
ds.close();
}
}
}
}
}