android: switch to connectivity manager

Co-Authored-By: Frans de Jonge <fransdejonge@gmail.com>
reviewable/pr5828/r1
Martín Fernández 4 years ago
parent 2420625be1
commit 3856f04445

@ -230,22 +230,21 @@ end
function Device:initNetworkManager(NetworkMgr) function Device:initNetworkManager(NetworkMgr)
function NetworkMgr:turnOnWifi(complete_callback) function NetworkMgr:turnOnWifi(complete_callback)
android.setWifiEnabled(true) android.openWifiSettings()
if complete_callback then
local UIManager = require("ui/uimanager")
UIManager:scheduleIn(1, complete_callback)
end
end end
function NetworkMgr:turnOffWifi(complete_callback) function NetworkMgr:turnOffWifi(complete_callback)
android.setWifiEnabled(false) android.openWifiSettings()
if complete_callback then
local UIManager = require("ui/uimanager")
UIManager:scheduleIn(1, complete_callback)
end
end end
NetworkMgr.isWifiOn = function()
return android.isWifiEnabled() function NetworkMgr:openSettings()
android.openWifiSettings()
end
function NetworkMgr:isWifiOn()
local ok = android.getNetworkInfo()
ok = tonumber(ok)
if not ok then return false end
return ok == 1
end end
end end
@ -254,12 +253,23 @@ function Device:performHapticFeedback(type)
end end
function Device:retrieveNetworkInfo() function Device:retrieveNetworkInfo()
local ssid, ip, gw = android.getNetworkInfo() local ok, type = android.getNetworkInfo()
if ip == "0" or gw == "0" then ok, type = tonumber(ok), tonumber(type)
if not ok or not type or type == C.ANETWORK_NONE then
return _("Not connected") return _("Not connected")
else else
local BD = require("ui/bidi") if type == C.ANETWORK_WIFI then
return T(_("Connected to %1\n IP address: %2\n gateway: %3"), BD.wrap(ssid), BD.ltr(ip), BD.ltr(gw)) return _("Connected to Wi-Fi")
elseif type == C.ANETWORK_MOBILE then
return _("Connected to mobile data network")
elseif type == C.ANETWORK_ETHERNET then
return _("Connected to Ethernet")
elseif type == C.ANETWORK_BLUETOOTH then
return _("Connected to Bluetooth")
elseif type == C.ANETWORK_VPN then
return _("Connected to VPN")
end
return _("Unknown connection")
end end
end end

@ -153,6 +153,16 @@ function NetworkMgr:isOnline()
return socket.dns.toip("dns.msftncsi.com") ~= nil return socket.dns.toip("dns.msftncsi.com") ~= nil
end end
function NetworkMgr:isNetworkInfoAvailable()
if Device:isAndroid() then
-- always available
return true
else
--- @todo also show network info when device is authenticated to router but offline
return self:isWifiOn()
end
end
function NetworkMgr:setHTTPProxy(proxy) function NetworkMgr:setHTTPProxy(proxy)
local http = require("socket.http") local http = require("socket.http")
http.PROXY = proxy http.PROXY = proxy
@ -165,6 +175,18 @@ function NetworkMgr:setHTTPProxy(proxy)
end end
function NetworkMgr:getWifiMenuTable() function NetworkMgr:getWifiMenuTable()
if Device:isAndroid() then
return {
text = _("Wi-Fi settings"),
enabled_func = function() return true end,
callback = function() NetworkMgr:openSettings() end,
}
else
return self:getWifiToggleMenuTable()
end
end
function NetworkMgr:getWifiToggleMenuTable()
return { return {
text = _("Wi-Fi connection"), text = _("Wi-Fi connection"),
enabled_func = function() return Device:hasWifiToggle() and not Device:isEmulator() end, enabled_func = function() return Device:hasWifiToggle() and not Device:isEmulator() end,
@ -267,8 +289,7 @@ function NetworkMgr:getInfoMenuTable()
return { return {
text = _("Network info"), text = _("Network info"),
keep_menu_open = true, keep_menu_open = true,
--- @todo also show network info when device is authenticated to router but offline enabled_func = function() return self:isNetworkInfoAvailable() end,
enabled_func = function() return self:isWifiOn() end,
callback = function() callback = function()
if Device.retrieveNetworkInfo then if Device.retrieveNetworkInfo then
UIManager:show(InfoMessage:new{ UIManager:show(InfoMessage:new{

@ -1 +1 @@
Subproject commit 9dae1481b08e7a247da73c414e79930f474e9417 Subproject commit b0cbf2690b5dd01549da1b036bfaca03752fd02d
Loading…
Cancel
Save