我已经开发了Wear OS 2.0+应用程序,可与HTTP API通信。我正在使用Volley连接到此API,但是似乎只有在关闭蓝牙后才能使用。我用蓝牙发出的任何请求都只是超时。另一端通常在几毫秒内做出响应,并返回不超过几千字节的数据。
文档说明有关网络访问的以下内容:
Wear OS应用程序可以发出网络请求。当手表带有蓝牙时 连接手机后,手表的网络流量通常为 通过电话代理。但是当手机不可用时,Wi-Fi和 根据硬件,使用蜂窝网络。磨损 平台处理网络之间的转换。
因此,根据我的理解,Android应该确保通过蓝牙(通过电话代理)或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网络。但是,创建一个我不需要的高带宽网络听起来有点不必要,而且会耗尽我试图阻止的电量。
答案 0 :(得分:1)
原来问题出在另一侧。该API永远不会发送响应,每次发送请求时都会导致超时。
如果您遇到类似的问题,我建议您对蓝牙进行测试。