Невозможно отправить HTTP-запросы по износу Bluetooth

1

Я разработал приложение Wear OS 2. 0+, которое взаимодействует с HTTP API. Я использую Volley для подключения к этому API, но кажется, что он работает только тогда, когда я выключил Bluetooth. Любые запросы, которые я делаю с Bluetooth просто тайм-аут. Другой конец обычно отвечает в течение миллисекунд и возвращает не более нескольких килобайт.

В документации говорится о доступе к сетям:

Приложения Wear OS могут делать сетевые запросы. Когда часы подключены к телефону через Bluetooth, трафик сети часов обычно передается через телефон. Но когда телефон недоступен, используются Wi-Fi и сотовые сети, в зависимости от аппаратного обеспечения. Платформа Wear обрабатывает переходы между сетями.

Поэтому, насколько я понимаю, Android должен позаботиться о том, чтобы мои запросы поступали на другой конец, либо через Bluetooth (через телефон), либо через Wi-Fi.

Фактический код, который делает HTTP-запрос с залпом:

public <T> CompletableFuture<T> send(String url, Class<T> type) {
    CompletableFuture<T> requestCompletableFuture = new CompletableFuture<>();

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
            response -> {
                T data = serializer.fromJson(response.toString(), type);

                requestCompletableFuture.complete(data);
            }, (ex) -> {
                requestCompletableFuture.completeExceptionally(ex);
    });

    request.setRetryPolicy(new DefaultRetryPolicy(15000,
            0,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

    requestQueue.add(request);

    return requestCompletableFuture;
}

Android действительно предоставляет ConnectivityManager, который дает мне возможность запрашивать сеть WIFI. Но создание сети с высокой пропускной способностью, которая мне не нужна, звучит немного ненужно, и батарея разряжает то, что я пытаюсь предотвратить.

Теги:
wear-os

1 ответ

1

Оказывается, проблема была на другой стороне. API просто никогда не отправляет ответ, который вызывал таймаут каждый раз, когда я отправляю запрос.

Я рекомендую протестировать Bluetooth, если вы столкнулись с подобной проблемой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню