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);
Заранее спасибо.