在API 26之后,Android发布了startLocalOnlyHotspot来启动本地热点。
我在我的Android应用中将本地热点用于> = Oreo的设备。我面临的问题是,只要可见该应用程序,它就可以正常工作,但是在关闭该应用程序后,热点将关闭。在极少数情况下,即使看不见应用程序,热点也不会关闭。 这是我用来启动本地热点的代码。
//Workaround to turn on hotspot for Oreo versions
@RequiresApi(api = Build.VERSION_CODES.O)
public void turnOnHotspot() {
if (!oreoenabled) {
wifiManager.startLocalOnlyHotspot(new WifiManager.LocalOnlyHotspotCallback() {
@Override
public void onStarted(WifiManager.LocalOnlyHotspotReservation reservation) {
super.onStarted(reservation);
hotspotReservation = reservation;
currentConfig = reservation.getWifiConfiguration();
Log.v("DANG", "THE PASSWORD IS: "
+ currentConfig.preSharedKey
+ " \n SSID is : "
+ currentConfig.SSID);
hotspotDetailsDialog();
oreoenabled = true;
}
@Override
public void onStopped() {
super.onStopped();
Log.v("DANG", "Local Hotspot Stopped");
}
@Override
public void onFailed(int reason) {
super.onFailed(reason);
Log.v("DANG", "Local Hotspot failed to start");
}
}, new Handler());
我已经查看了日志,但是不知道为什么会这样。理想情况下,当热点关闭时,应进入onStopped()
回调,但在应用关闭时则不会(因为热点无缘无故地关闭)。