Android не получает UDP-трансляцию даже с MulticastLock от ESP-32 - PullRequest
0 голосов
/ 14 апреля 2020

Я не могу получать широковещательные пакеты UDP, AsyncTask застревает при получении (пакет) метода (или тайм-ауты, если установлены).

Я вызываю UdpTransmission после установки MulticastLock:

 @Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);

    WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    assert wifi != null;
    WifiManager.MulticastLock wifiLock = wifi.createMulticastLock("ABC");
    wifiLock.acquire();

    UdpTransmission udpTransmission = new UdpTransmission();

    udpTransmission.execute();

(...)

Это класс UdpTransmission:

package com.example.tcc.tcpconn;

import android.os.AsyncTask;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UdpTransmission extends AsyncTask<Void, Void, Void>
{
    public UdpTransmission()
    {

    }

    @Override
    protected Void doInBackground(Void ... voids)
    {
        byte[] packet = new byte[32];
        DatagramPacket dp = new DatagramPacket(packet, packet.length);

        try(DatagramSocket ds = new DatagramSocket(49153))
        {
            ds.setBroadcast(true);

//            ds.setSoTimeout(500);

            String rcvd = Arrays.toString(packet);
        }

        catch(Exception e)
        {
            e.printStackTrace();
        }

        return null;
    }
}

Манифест. xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />

Скриншот WireShark :

wireshark_screenshot

Я что-то упустил? Любая помощь будет оценена!

1 Ответ

0 голосов
/ 14 апреля 2020

На самом деле, если я подключу телефон (Xperia XA1 Plus), он работает. Но не эмулятор, это странно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...