ネットワーク上の別のデバイスからの UDP ブロードキャストについてネットワークをスキャンするサービス インテントを作成しています。デバイスが見つかると、メッセージをメイン アクティビティに送り返し、それからその処理を実行します。問題は、このスキャンに何らかのタイムアウトを設定する必要があることです。そのため、一定時間経過してもデバイスが見つからない場合は、メイン アクティビティにそれを伝えることができます。私の最初の考えは、カウントダウンタイマーを使用することでしたが、機能していません。ブロードキャストをスキャンするメソッドのコードは次のとおりです
public void getIP()
{
new CountDownTimer(5000, 1000){
@Override
public void onFinish() {
// TODO Auto-generated method stub
System.out.println("Timer Finished");
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
}
}.start();
try {
UDPSocket = new DatagramSocket(55555, InetAddress.getByName("255.255.255.255"));
UDPSocket.setBroadcast(true);
byte[] buf = new byte[512];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
while(shouldContinue){
try {
UDPSocket.receive(packet);
InetAddress senderAddress = packet.getAddress();
String Sender = senderAddress.getHostAddress();
UDPSocket.close();
shouldContinue = false;
pingIP(Sender);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
sendIPBack("device not found local");
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
sendIPBack は、メイン アクティビティにメッセージを返す単なるメソッドです。onFinish および onTick メソッドが実行されない理由は何ですか?
ありがとう