Android как узнать текущее состояние LocalOnlyHotspot - PullRequest
0 голосов
/ 05 ноября 2018

Android O предлагает wifiManager.startLocalOnlyHotspot для создания закрытой сети. Для того, чтобы создать ярлык или виджет для переключения такой точки доступа, как я могу узнать состояние LocalOnlyHotspot, чтобы судить, запускать или закрывать его?

А когда я запускаю localOnlyHotspot, как к нему может подключиться другое устройство? (как его получить пароль?)

1 Ответ

0 голосов
/ 05 апреля 2019

Этот код может помочь вам запустить его. Я реализовал класс Hotspotmanager, который можно использовать в приложениях. После включения горячей точки она доставляет объект конфигурации через слушателя, который вы должны реализовать в своей деятельности по вызову. Из этой конфигурации вы можете взять SSID и preSharedKey. ПРИМЕЧАНИЕ: SSID и пароль не могут быть изменены !!! Потому что создание полностью скрыто в системном API Android.

public class HotspotManager {
private final WifiManager wifiManager;
private final OnHotspotEnabledListener onHotspotEnabledListener;
private WifiManager.LocalOnlyHotspotReservation mReservation;

public interface OnHotspotEnabledListener{
    void OnHotspotEnabled(boolean enabled, @Nullable WifiConfiguration wifiConfiguration);
}

//call with Hotspotmanager(getApplicationContext().getSystemService(Context.WIFI_SERVICE),this) in an activity that implements the Hotspotmanager.OnHotspotEnabledListener
public HotspotManager(WifiManager wifiManager, OnHotspotEnabledListener onHotspotEnabledListener) {
    this.wifiManager = wifiManager;
    this.onHotspotEnabledListener = onHotspotEnabledListener;
}

@RequiresApi(api = Build.VERSION_CODES.O)
public void turnOnHotspot() {
    wifiManager.startLocalOnlyHotspot(new WifiManager.LocalOnlyHotspotCallback() {

        @Override
        public void onStarted(WifiManager.LocalOnlyHotspotReservation reservation) {
            super.onStarted(reservation);
            mReservation = reservation;
            onHotspotEnabledListener.OnHotspotEnabled(true, mReservation.getWifiConfiguration());
        }

        @Override
        public void onStopped() {
            super.onStopped();
        }

        @Override
        public void onFailed(int reason) {
            super.onFailed(reason);
        }
    }, new Handler());
}

@RequiresApi(api = Build.VERSION_CODES.O)
public void turnOffHotspot() {
    if (mReservation != null) {
        mReservation.close();
        onHotspotEnabledListener.OnHotspotEnabled(false, null);
    }
}
...