代码之家  ›  专栏  ›  技术社区  ›  Jamie

无法在wearos bluetooth上发送HTTP请求

  •  0
  • Jamie  · 技术社区  · 7 年前

    我开发了一个wear os 2.0+应用程序,可以与HTTP API进行通信。我正在使用截取连接到此API,但它似乎只有在我关闭蓝牙时才起作用。我使用蓝牙发出的任何请求都只是超时。另一端通常在毫秒内响应,并返回不超过几千字节。

    穿戴操作系统应用程序可以发出网络请求。当手表有蓝牙时 连接到手机,手表的网络流量通常是 通过电话代理。但当手机不可用时,Wi-Fi和 使用蜂窝网络,具体取决于硬件。磨损 平台处理网络之间的转换。

    因此,据我所知,安卓应该注意确保我的请求能够通过蓝牙(通过手机代理)或wifi到达另一端。

    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 回复  |  直到 7 年前
        1
  •  1
  •   Jamie    7 年前

    事实证明问题出在另一边。API从不发送导致每次发送请求时超时的响应。

    如果你遇到类似的问题,我建议你测试一下蓝牙。