无法在Wearos蓝牙上发送HTTP请求

时间:2019-03-16 18:20:37

标签: android wear-os

我已经开发了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网络。但是,创建一个我不需要的高带宽网络听起来有点不必要,而且会耗尽我试图阻止的电量。

1 个答案:

答案 0 :(得分:1)

原来问题出在另一侧。该API永远不会发送响应,每次发送请求时都会导致超时。

如果您遇到类似的问题,我建议您对蓝牙进行测试。