UDP сокет андроид студия

Здравствуйте, у меня есть эта ошибка:

    android.os.NetworkOnMainThreadException
    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1459)
    at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:275)
    at libcore.io.IoBridge.recvfrom(IoBridge.java:610)
    at java.net.PlainDatagramSocketImpl.doRecv(PlainDatagramSocketImpl.java:152)
    at java.net.PlainDatagramSocketImpl.receive0(PlainDatagramSocketImpl.java:140)
    at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:143)
    at java.net.DatagramSocket.receive(DatagramSocket.java:847)
    at jaodev.vibrometroudp.MainActivity$1$1.run(MainActivity.java:98)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6626)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)

Я пытаюсь получить UDP-пакеты каждые X миллисекунд и отображать их в TextView. Я также реализовал поток, и я управляю им с помощью mhandler, но мне это не удалось.

      scheduleTaskExecutor = Executors.newScheduledThreadPool(1);
    scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
        public void run() {
            // If you need update UI, simply do this:
            runOnUiThread(new Runnable() {
                public void run() {
                    byte[] buffer = new byte[100];
                    DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
                    DatagramSocket datagramSocket = null;
                    try {
                        datagramSocket = new DatagramSocket(3333);
                        try {
                            datagramSocket.receive(packet);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    } catch (SocketException e) {
                        e.printStackTrace();
                    }
                    String val="";
                    for (int i=0;i<100;i++){
                        if (buffer[i]>0) {
                            val += buffer[i];
                        }}
                    test.setText(val);

                }
            });
        }
    }, 0, 1000, TimeUnit.MICROSECONDS);

Заранее спасибо.

0 ответов

Другие вопросы по тегам