Принудительно использовать Cellular Inte rnet в Wear OS программно - PullRequest
1 голос
/ 24 февраля 2020

Я разрабатываю приложение чата для Wear OS от Google. Я тестирую приложение на часах 4G с Wear OS (Ti c Watch Pro 4G).

Проблема: когда часы подключены к родительскому мобильному телефону (Android или iOS), они используют Inte rnet через родительское устройство через соединение Bluetooth. Это происходит даже при том, что часы имеют собственное соединение 4G. Большую часть времени скорость Inte rnet по Bluetooth очень низкая, и, следовательно, большая часть запросов к API истекает. Часы предпочитают Bluetooth, даже если они подключены к высокоскоростной сети WiFi. Поведение этих часов мешает пользователям использовать приложение.

Идеальное решение: часы должны использовать 4G или WiFi для подключения Inte rnet, даже если они подключены к родительскому мобильному телефону через Bluetooth.

Коды, пробованные до сих пор: Использовали код для переключения на WiFi или сотовую сеть. Inte rnet при запуске приложения

networkCallback = new ConnectivityManager.NetworkCallback() {
    @Override
    public void onAvailable(Network network) {
        if (bindProcessToNetwork(network)) {
            // socket connections will now use this network
        } else {
            // app doesn't have android.permission.INTERNET permission
        }
    }
};

NetworkRequest request = new NetworkRequest.Builder()
    .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
    .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
    .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
    .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
    .build();

connectivityManager.requestNetwork(request, networkCallback);

Приведенный выше код успешно работает для WiFi, т.е. начинает использовать WiFi для Inte rnet, даже если он подключен к родительскому устройству через Bluetooth. После выполнения кода метод обратного вызова (onAvailable) вызывается в сети WiFi.

Но код НЕ работает, когда часы должны переключиться на 4G для Inte rnet. в случае 4G метод обратного вызова (onAvailable) не вызывается.

Я следовал по коду по ссылке ниже, но безуспешно: https://developer.android.com/training/wearables/data-layer/network-access

Пожалуйста помощь.

...