【问题标题】:Keep wifi connected on Android Wear在 Android Wear 上保持 wifi 连接
【发布时间】:2017-08-10 17:42:07
【问题描述】:

问题: 我有一个带有 Android Wear 2.0 的华为手表。我的应用程序应该通过 WiFi 发送数据,但手表与 Wifi 断开连接的速度非常快。如何让手表保持与 Wifi 的连接?

清单:

<uses-feature android:name="android.hardware.wifi" />

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

在活动中:

public static void keepWiFiOn(Context context, boolean on) {
    if (wifiLock == null) {
        WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        if (wm != null) {
            wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL, TAG);
            wifiLock.setReferenceCounted(true);
        }
    }
    if (wifiLock != null) { // May be null if wm is null
        if (on) {
            wifiLock.acquire();
            Log.d(TAG, "Acquired WiFi lock");
        } else if (wifiLock.isHeld()) {
            wifiLock.release();
            Log.d(TAG, "Released WiFi lock");
        }
    }
}

获取了WiFi锁,但是对方却没有收到发送的数据。

【问题讨论】:

  • 是否有任何错误日志可以提示它断开连接的原因?
  • @noogui 不幸的是没有。当我在设置菜单中连接到wifi并连接时,我启动应用程序并退出应用程序返回设置屏幕,然后wifi断开连接
  • 找到解决方案了吗?我有同样的问题。当与蓝牙手机配对时,wear os 2.0+ 设备将无法可靠地获取或保持 wifi 连接......并且获得 wifi 锁似乎没有多大帮助

标签: android wifi wear-os communication wifimanager


【解决方案1】:

你应该通过 ConnectivityManager.requestNetwork 请求 wifi

示例代码:

ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
NetworkRequest request = new NetworkRequest.Builder()
   .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
   .build();
networkCallback = new NetworkCallback();
cm.requestNetwork(request, networkCallback);

【讨论】:

    【解决方案2】:

    可以在设备的首选项中防止这种“省电”行为。 在这种情况下,您需要在首选项中启用此模式并禁用可穿戴设备和手持设备之间的连接(例如,禁用蓝牙)。

    使用您的代码无法做到这一点。

    【讨论】:

      【解决方案3】:

      尝试断开与手机的蓝牙连接。

      我发现如果它们已连接(HuaweiWatch2iPhone),手表将使用手机连接。它会忽略任何锁定并重新连接尝试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-09
        • 1970-01-01
        相关资源
        最近更新 更多