ネットワークの QoS を測定する Android アプリを開発しようとしています。アプリは、システムで実行されている UDP サーバーに UDP パケットを送信します。これは長時間実行されるプロセスであるため、IntentService を拡張するクラスに UDP 接続を実装しました。IntentService を使用する理由は、いくつかのパラメーターをサービスに渡す必要があるためです。私のアクティビティには、IntentService からのメッセージをリッスンして出力する BroadcastReceiver があります。私の問題は、 IntentService がスムーズに実行されているにもかかわらず、アクティビティがメッセージを受信していないことです。私はアンドロイド開発に慣れていないので、私の理解不足を許してください。ガイダンス/提案をいただければ幸いです。以下にコードの一部を掲載しています。Logcat にはエラーは表示されません。私はintent.setAction()を見ましたメソッドはいくつかの例で使用されていますが、私の場合の使用方法についてはあまり明確ではありません。
BroadcastReceiver (Activity クラス内で定義)
public class UdpResponseReceiver extends BroadcastReceiver {
 public static final String ACTION_RESP = "com.example.udpmessageclient.intent.action.MESSAGE_PROCESSED";
    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println(UdpService.PARAM_OUT_MSG);
    }
受信者を登録しました:
IntentFilter filter = new IntentFilter(UdpResponseReceiver.ACTION_RESP);
filter.addCategory(Intent.CATEGORY_DEFAULT);
receiver = new UdpResponseReceiver();
registerReceiver(receiver, filter);
IntentService クラス:
public class UdpService extends IntentService {
//..variable declarations
public UdpService() {
    // TODO Auto-generated constructor stub
    super("UdpService");
}
@Override
protected void onHandleIntent(Intent intent) {
    // TODO Auto-generated method stub
    host = intent.getStringExtra("host");
    port = intent.getIntExtra("port", 4000);
    pType= intent.getIntExtra("pType", 0);
    delay = intent.getIntExtra("delay", 0);
    msg= intent.getStringExtra("msg");
    broadcastIntent = new Intent();
    broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
    broadcastIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
    try {
        addr = InetAddress.getByName(host);
        // addr=InetAddress.getLocalHost();
        socket = new DatagramSocket();
        // socket.connect(addr,port);
        System.out.println("\nSocket Connected");
    } catch (Exception e) {
        System.out.println("\nConnection failed");
        return;
    }
    send=true;
    switch (pType) {
    case 0:
        while (send) {
            sendPacket(msg);
        }
    case 1:
        while (send) {
            try {
                Thread.currentThread().sleep(delay);
            } catch (Exception e) {
            }
            sendPacket(msg);
        }
    case 2:
        while (send) {
            int u = want(30);
            String data1 = "";
            while ((u--) > 0)
                data1 = data1 + msg;
            sendPacket(data1);
        }
    case 3:
        while (send) {
            int u = want(30);
            System.out.println(u);
            String data1 = "";
            while ((u--) > 0)
                data1 = data1 + msg;
            System.out.println("data length :" + data1.length());
            try {
                Thread.currentThread().sleep(delay);
            } catch (Exception e) {
            }
            sendPacket(data1);
        }
    }
}
public void onDestroy(){
    super.onDestroy();
    send=false;
    socket.close();
    socket=null;
}
void sendPacket(String text) {
    try {
        System.out.println("\nClient:: Sending packet: " + " to " + addr
                + port);
        byte[] data = text.getBytes();
        spacket = new DatagramPacket(data, data.length, addr, port);
        socket.send(spacket);
        String resultTxt="Sent Packet at:"+DateFormat.format("MM/dd/yy h:mmaa", System.currentTimeMillis());
// this is where I am trying to send message back to the activity
    broadcastIntent.putExtra(PARAM_OUT_MSG, resultTxt);
        sendBroadcast(broadcastIntent);
    } catch (Exception e) {
        System.out.println("Error:" + e.getMessage());
        e.printStackTrace();
        return;
    }
}
}
サービス停止時の logcat エラー メッセージ:
01-14 15:53:41.446: W/System.err(1176): java.lang.NullPointerException
01-14 15:53:41.456: W/System.err(1176):     at com.example.udpmessageclient.UdpService.sendPacket(UdpService.java:123)
01-14 15:53:41.466: W/System.err(1176):     at com.example.udpmessageclient.UdpService.onHandleIntent(UdpService.java:74)
01-14 15:53:41.466: W/System.err(1176):     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
01-14 15:53:41.466: W/System.err(1176):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-14 15:53:41.466: W/System.err(1176):     at android.os.Looper.loop(Looper.java:137)
01-14 15:53:41.476: W/System.err(1176):     at android.os.HandlerThread.run(HandlerThread.java:60)