问题: 我有一个带有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锁定,但不会在另一侧收到数据发送。
答案 0 :(得分:0)
可以防止这样的电池节省&#39;设备首选项中的行为。 在这种情况下,您可以在首选项中启用此模式,并禁用可穿戴设备和手持设备之间的连接(例如,禁用蓝牙)。
使用您的代码无法做到这一点。
答案 1 :(得分:0)
尝试断开与手机的蓝牙连接。
我发现如果连接(HuaweiWatch2&lt; - &gt; iPhone),手表将使用手机连接。它将忽略任何锁定和重新连接尝试。
答案 2 :(得分:0)
您应该通过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);