Я разработал приложение Wear OS 2.0+, которое взаимодействует с HTTP API.Я использую Volley для подключения к этому API, но кажется, что он работает только тогда, когда я выключил Bluetooth.Любые запросы, которые я делаю с Bluetooth просто тайм-аут.Другой конец обычно отвечает в течение миллисекунд и возвращает не более нескольких килобайт.
В документации говорится следующее о доступе к сети:
Изнашиваемые приложения ОС могут выполнять сетевые запросы.Когда часы подключены к телефону через Bluetooth, сетевой трафик часов обычно передается через телефон.Но когда телефон недоступен, используются Wi-Fi и сотовые сети, в зависимости от аппаратного обеспечения.Платформа Wear обрабатывает переходы между сетями.
Так что, насколько я понимаю, Android должен позаботиться о том, чтобы мои запросы поступали на другой конец, либо через Bluetooth (через прокси через телефон), либо через wifi.
Фактический код, который делает 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.Но создание сети с высокой пропускной способностью, которая мне не нужна, звучит немного ненужно, а батарея разряжает то, что я пытаюсь предотвратить.