diff --git a/android/app/build.gradle b/android/app/build.gradle
index c656f247..92b87fbc 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -85,6 +85,7 @@ dependencies {
implementation 'com.github.kittinunf.fuel:fuel:2.3.0' //for JVM
implementation 'com.github.kittinunf.fuel:fuel-android:2.3.0' //for Android
+ implementation 'com.wang.avi:library:2.1.3'
// Dependency on a remote binary
// implementation 'com.example.android:app-magic:12.3'
diff --git a/android/app/src/main/java/com/cloud/diplomaticquarterapp/BaseActivity.kt b/android/app/src/main/java/com/cloud/diplomaticquarterapp/BaseActivity.kt
new file mode 100644
index 00000000..5790abf6
--- /dev/null
+++ b/android/app/src/main/java/com/cloud/diplomaticquarterapp/BaseActivity.kt
@@ -0,0 +1,51 @@
+package com.cloud.diplomaticquarterapp
+
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.widget.RelativeLayout
+import android.widget.TextView
+import com.cloud.diplomaticquarterapp.utils.PlatformBridge
+import com.wang.avi.AVLoadingIndicatorView
+import io.flutter.embedding.android.FlutterView
+import io.flutter.embedding.engine.FlutterEngine
+import io.flutter.embedding.engine.dart.DartExecutor
+import io.flutter.plugin.common.MethodChannel
+import io.flutter.view.FlutterMain
+import org.jetbrains.anko.find
+import java.util.ArrayList
+
+open class BaseActivity : AppCompatActivity() {
+
+ lateinit var loadingView:RelativeLayout
+ lateinit var lblLoadingView:TextView
+ lateinit var avLoadingView:AVLoadingIndicatorView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ }
+
+ override fun setContentView(layoutResID: Int) {
+ super.setContentView(layoutResID)
+
+ loadingView = find(R.id.loadingView)
+ lblLoadingView = find(R.id.lblLoadingView)
+ avLoadingView = find(R.id.avLoadingView)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ }
+
+ override fun onStop() {
+ super.onStop()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/cloud/diplomaticquarterapp/FlutterMainActivity.kt b/android/app/src/main/java/com/cloud/diplomaticquarterapp/FlutterMainActivity.kt
index b984835f..387c35a4 100644
--- a/android/app/src/main/java/com/cloud/diplomaticquarterapp/FlutterMainActivity.kt
+++ b/android/app/src/main/java/com/cloud/diplomaticquarterapp/FlutterMainActivity.kt
@@ -11,16 +11,17 @@ import io.flutter.plugin.common.MethodChannel
import io.flutter.view.FlutterMain
import java.util.ArrayList
-class FlutterMainActivity : AppCompatActivity() {
+class FlutterMainActivity : BaseActivity() {
- private lateinit var channel: MethodChannel
private var flutterView: FlutterView? = null
companion object {
private var flutterEngine: FlutterEngine? = null
- private const val CHANNEL = "HMG-Platform-Bridge"
- private const val METHOD_CONNECT_WIFI = "connectHMGGuestWifi"
- private const val METHOD_SHOW_LOADING = "loading"
+
+ private lateinit var instance:FlutterMainActivity
+ fun getInstance() : FlutterMainActivity{
+ return instance
+ }
}
@@ -72,6 +73,7 @@ class FlutterMainActivity : AppCompatActivity() {
override fun onResume() {
super.onResume()
flutterEngine!!.lifecycleChannel.appIsResumed()
+ instance = this
}
override fun onPause() {
diff --git a/android/app/src/main/java/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Wifi.kt b/android/app/src/main/java/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Wifi.kt
new file mode 100644
index 00000000..e594cc83
--- /dev/null
+++ b/android/app/src/main/java/com/cloud/diplomaticquarterapp/hmgwifi/HMG_Wifi.kt
@@ -0,0 +1,99 @@
+package com.cloud.diplomaticquarterapp.hmgwifi
+
+import android.annotation.SuppressLint
+import android.util.Log
+import com.cloud.diplomaticquarterapp.API
+import com.cloud.diplomaticquarterapp.FlutterMainActivity
+import com.github.kittinunf.fuel.Fuel
+import com.github.kittinunf.fuel.core.extensions.jsonBody
+import com.github.kittinunf.fuel.httpGet
+import com.github.kittinunf.fuel.httpPost
+import org.jetbrains.anko.doAsync
+import org.json.JSONObject
+
+
+@SuppressLint("MissingPermission")
+class HMG_Wifi(flutterMainActivity: FlutterMainActivity) {
+ private val TAG = "HMG_Wifi"
+ private val TEST = true
+
+ private var context = flutterMainActivity;
+
+ private lateinit var completionListener: ((status: Boolean, message: String) -> Unit)
+
+ private var SSID = "GUEST-POC"
+ private var USER_NAME = ""
+ private var PASSWORD = ""
+
+ fun completionOnUiThread(status: Boolean, message: String){
+ context.runOnUiThread {
+ completionListener(status, message)
+ }
+ }
+
+ /*
+ * Helpful:
+ * http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-programmatically
+ */
+ fun connectToHMGGuestNetwork(patientId: String, completion: (status: Boolean, message: String) -> Unit): HMG_Wifi {
+ completionListener = completion
+ getWifiCredentials(patientId) {
+ WPA(context,SSID).connect(USER_NAME,PASSWORD) { status, message ->
+ completionOnUiThread(status,message)
+ }
+ }
+ return this
+ }
+
+ private fun haveInternet(completion: ((status: Boolean) -> Unit)){
+ if (TEST)
+ completion(true)
+
+ "https://captive.apple.com".httpGet().response { request, response, result ->
+ val have = response.statusCode == 200 && String(response.data).contains("
Success", true)
+ completion(have)
+ }
+ }
+
+ private fun getWifiCredentials(patientId:String, completion: (() -> Unit)){
+// if (TEST){
+// SSID = "GUEST-POC"
+// USER_NAME = "0696"
+// PASSWORD = "0000"
+// completion()
+// return
+// }
+
+ val jsonBody = """{"PatientID":$patientId}"""
+ API.WIFI_CREDENTIALS.
+ httpPost()
+ .jsonBody(jsonBody, Charsets.UTF_8)
+ .response { request, response, result ->
+
+ result.fold(success = { data ->
+ val jsonString = String(data)
+ val jsonObject = JSONObject(jsonString)
+ if(!jsonObject.getString("ErrorMessage").equals("null")){
+ val errorMsg = jsonObject.getString("ErrorMessage")
+ completionOnUiThread(false, errorMsg)
+
+ }else{
+ jsonObject.getJSONArray("Hmg_SMS_Get_By_ProjectID_And_PatientIDList").let { array ->
+ array.getJSONObject(0).let { object_ ->
+ if (object_.has("UserName") && object_.has("UserName")){
+ USER_NAME = object_.getString("UserName")
+ PASSWORD = object_.getString("Password")
+ completion()
+ }else{
+ completionOnUiThread(false, "Failed to get your internet credentials")
+ }
+ }
+ }
+ }
+
+ },failure = { error ->
+ completionOnUiThread(false, error.localizedMessage )
+ })
+ }
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/cloud/diplomaticquarterapp/hmgwifi/WPA.kt b/android/app/src/main/java/com/cloud/diplomaticquarterapp/hmgwifi/WPA.kt
new file mode 100644
index 00000000..18bfc1a7
--- /dev/null
+++ b/android/app/src/main/java/com/cloud/diplomaticquarterapp/hmgwifi/WPA.kt
@@ -0,0 +1,98 @@
+package com.cloud.diplomaticquarterapp.hmgwifi
+
+import android.content.Context
+import android.net.ConnectivityManager
+import android.net.wifi.*
+import android.util.Log
+import com.cloud.diplomaticquarterapp.FlutterMainActivity
+import com.cloud.diplomaticquarterapp.utils.HMGUtils
+
+class WPA(mainActivity: FlutterMainActivity, SSID:String) {
+ private var TAG = "WPA"
+ private var SSID = "GUEST-POC"
+ private var wifiManager_: WifiManager? = null
+ private var connectivityManager_: ConnectivityManager? = null
+
+ init {
+ wifiManager_ = mainActivity.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager?
+ connectivityManager_ = mainActivity.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager?
+ }
+
+ fun connect(identity:String, password:String, completion: (status: Boolean, message: String) -> Unit) {
+ if(wifiManager_ == null || connectivityManager_ == null){
+ completion(false, "Failed to access system connectivity services")
+ return
+ }
+
+ val wifiManager = wifiManager_!!
+ val connectivityManager = connectivityManager_!!
+
+ // Initialize the WifiConfiguration object
+ val enterpriseConfig = WifiEnterpriseConfig()
+ val wifi = WifiConfiguration()
+ wifi.SSID = """"$SSID""""
+ wifi.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP)
+ wifi.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X)
+ enterpriseConfig.eapMethod = WifiEnterpriseConfig.Eap.PEAP
+ enterpriseConfig.identity = identity
+ enterpriseConfig.password = password
+ wifi.enterpriseConfig = enterpriseConfig
+ wifi.networkId = ssidToNetworkId(wifi.SSID)
+ if (wifi.networkId == -1) {
+ wifiManager.addNetwork(wifi)
+ } else {
+ Log.v(TAG, "WiFi found - updating it.\n")
+ wifiManager.updateNetwork(wifi)
+ }
+ Log.v(TAG, "saving config.\n")
+ wifiManager.saveConfiguration()
+ wifi.networkId = ssidToNetworkId(wifi.SSID)
+
+ Log.v(TAG, "wifi ID in device = " + wifi.networkId)
+
+ var supState: SupplicantState
+ val networkIdToConnect = wifi.networkId
+ if (networkIdToConnect >= 0) {
+ Log.v(TAG, "Start connecting...\n")
+
+ // We disable the network before connecting, because if this was the last connection before
+ // a disconnect(), this will not reconnect.
+ wifiManager.disableNetwork(networkIdToConnect)
+ wifiManager.enableNetwork(networkIdToConnect, true)
+
+ val wifiInfo: WifiInfo = wifiManager.connectionInfo
+
+ HMGUtils.timer(5000,false){
+ supState = wifiInfo.supplicantState
+ Log.i(TAG, "WifiWizard: Done connect to network : status = $supState")
+ if (supState == SupplicantState.COMPLETED)
+ completion(true,"Connected to Wifi")
+ else
+ completion(false,"Failed to connect with HMG network")
+ }
+
+ } else {
+ Log.v(TAG, "WifiWizard: cannot connect to network")
+ completion(false,"Failed to connect to Wifi")
+ }
+ }
+
+ /**
+ * This method takes a given String, searches the current list of configured WiFi
+ * networks, and returns the networkId for the network if the SSID matches. If not,
+ * it returns -1.
+ */
+ private fun ssidToNetworkId(ssid: String): Int {
+ val currentNetworks = wifiManager_!!.configuredNetworks
+ var networkId = -1
+
+ // For each network in the list, compare the SSID with the given one
+ for (test in currentNetworks) {
+ if (test.SSID == ssid) {
+ networkId = test.networkId
+ break
+ }
+ }
+ return networkId
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/HMGUtils.kt b/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/HMGUtils.kt
new file mode 100644
index 00000000..71488c1d
--- /dev/null
+++ b/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/HMGUtils.kt
@@ -0,0 +1,51 @@
+package com.cloud.diplomaticquarterapp.utils
+
+import android.opengl.Visibility
+import android.view.View
+import android.widget.Toast
+import com.cloud.diplomaticquarterapp.BaseActivity
+import java.util.*
+import kotlin.concurrent.timerTask
+
+class HMGUtils {
+
+ companion object{
+ fun timer(delay:Long, repeat:Boolean, tick:(Timer)->Unit) : Timer{
+ val timer = Timer()
+ if(repeat)
+ timer.schedule(timerTask {
+ tick(timer)
+ },delay,delay)
+ else
+ timer.schedule(timerTask {
+ tick(timer)
+ },delay)
+
+ return timer
+ }
+
+
+ fun showLoading(context: BaseActivity, show:Boolean = true, message:String = "Please wait"){
+ if(show){
+ context.loadingView.visibility = View.VISIBLE
+ context.avLoadingView.smoothToShow()
+ context.lblLoadingView.text = message
+ }else{
+ context.loadingView.visibility = View.GONE
+ context.avLoadingView.smoothToHide()
+ context.lblLoadingView.text = ""
+ }
+
+ }
+
+ fun showMessage(context:BaseActivity, title:String = "", message:String){
+ Toast.makeText(context,message,Toast.LENGTH_LONG).show()
+ }
+
+ }
+
+}
+
+private fun Timer.schedule(timerTask: TimerTask) {
+
+}
diff --git a/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/HMG_Wifi.kt b/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/HMG_Wifi_.kt
similarity index 76%
rename from android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/HMG_Wifi.kt
rename to android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/HMG_Wifi_.kt
index 5e43fafd..9bb6196e 100644
--- a/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/HMG_Wifi.kt
+++ b/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/HMG_Wifi_.kt
@@ -3,6 +3,9 @@ package com.cloud.diplomaticquarterapp.utils
import android.annotation.SuppressLint
import android.content.Context
import android.net.ConnectivityManager
+import android.net.Network
+import android.net.NetworkCapabilities
+import android.net.NetworkRequest
import android.net.wifi.ScanResult
import android.net.wifi.WifiConfiguration
import android.net.wifi.WifiManager
@@ -17,16 +20,18 @@ import java.util.*
@SuppressLint("MissingPermission")
-class HMG_Wifi(flutterMainActivity: FlutterMainActivity) {
+class HMG_Wifi_(flutterMainActivity: FlutterMainActivity) {
val TAG = "WIFI"
+ val TEST = true
var context = flutterMainActivity;
- var completionListener: ((status:Boolean, message:String) -> Unit)? = null
+ var completionListener: ((status: Boolean, message: String) -> Unit)? = null
private var SSID = "HMG-GUEST"
private var USER_NAME = ""
private var PASSWORD = ""
+ var NETWORK_ID = -1 // HMG-GUEST Assigned Network ID by Android
private lateinit var PATIENT_ID:String
/*
* Helpful:
@@ -41,7 +46,10 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) {
* Helpful:
* http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-programmatically
*/
- fun connectToWifiNetworkWith(patientId:String): HMG_Wifi {
+ fun connectToWifiNetworkWith(patientId: String): HMG_Wifi_ {
+
+ val connectivityManager = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
+
PATIENT_ID = patientId
val security = "OPEN"
@@ -66,16 +74,16 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) {
// Then, you need to add it to Android wifi manager settings:
val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
- val networkId = wifiManager.addNetwork(conf)
- Log.d(TAG, "Network ID: $networkId")
+ NETWORK_ID = wifiManager.addNetwork(conf)
+ Log.d(TAG, "Network ID: $NETWORK_ID")
//wifiManager.disconnect();
- val result = wifiManager.enableNetwork(networkId, true)
+ val result = wifiManager.enableNetwork(NETWORK_ID, true)
//wifiManager.reconnect();
wifiManager.saveConfiguration()
if(result == true){
- authNetworkConnection(networkId);
+ authNetworkConnection(NETWORK_ID);
}else{
completionListener?.let { it(false, "Error connecting to HMG network") }
}
@@ -83,38 +91,36 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) {
}
private var authTimer:Timer? = null
- fun authNetworkConnection(networkId:Int){
+ fun authNetworkConnection(networkId: Int){
authTimer = Timer()
- authTimer?.scheduleAtFixedRate( object : TimerTask(){
+ authTimer?.scheduleAtFixedRate(object : TimerTask() {
override fun run() {
- if (connectedNetworkId() == networkId && connectedNetworkIPAddress() > 0){
+ if (connectedNetworkId() == networkId && connectedNetworkIPAddress() > 0) {
authServerCall()
authTimer?.cancel()
}
}
- },2000,1000)
+ }, 2000, 1000)
// If wifi not connected in 5 sec terminate with fail status
- Timer().schedule(object : TimerTask(){
+ Timer().schedule(object : TimerTask() {
override fun run() {
if (null != authTimer) {
authTimer?.cancel()
completionListener?.let { it(false, "Error connecting to HMG network") }
}
}
- },5000)
+ }, 5000)
}
fun authServerCall(){
- fun forceCallOverWifi(){
- val connectivityManager = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
- connectivityManager.networkPreference = ConnectivityManager.TYPE_WIFI
- }
-
+
fun call(){
- forceCallOverWifi()
+
+ forceNetworkCallOverWifi()
+
val params = listOf("cmd" to "authenticate", "password" to PASSWORD, "user" to USER_NAME)
val serverUrl = "https://captiveportal-login.hmg.com/cgi-bin/login"
// val serverUrl = "http://192.168.102.223/cgi-bin/login"
@@ -122,14 +128,14 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) {
.httpPost(params)
.timeout(10000)
.response { request, response, result ->
- Log.v(TAG,response.statusCode.toString())
+ Log.v(TAG, response.statusCode.toString())
haveInternet { have ->
if(have){
- Log.v(TAG,"Connected to internet via $SSID network at HMG")
+ Log.v(TAG, "Connected to internet via $SSID network at HMG")
completionListener?.let { it(true, "Successfully connected to the internet") }
}else{
- Log.e(TAG,"failed to connect to internet via $SSID network at HMG")
+ Log.e(TAG, "failed to connect to internet via $SSID network at HMG")
completionListener?.let { it(false, "Authentication failed or you are already using your credentials on another device") }
}
}
@@ -142,21 +148,23 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) {
call()
}
}else{
- completionListener?.let { it(false,"You must have active internet connection to connect with HMG Network") }
+ completionListener?.let { it(false, "You must have active internet connection to connect with HMG Network") }
}
}
}
- fun haveInternet(completion:((status:Boolean)->Unit)){
- "https://captive.apple.com".httpGet().response {request, response, result ->
- val have = response.statusCode == 200 && String(response.data).contains("Success",true)
+ fun haveInternet(completion: ((status: Boolean) -> Unit)){
+ if (TEST)
+ completion(true)
+
+ "https://captive.apple.com".httpGet().response { request, response, result ->
+ val have = response.statusCode == 200 && String(response.data).contains("Success", true)
completion(have)
}
}
- fun getAuthCredentials(completion:(() -> Unit)){
- val test = true
- if (test){
+ fun getAuthCredentials(completion: (() -> Unit)){
+ if (TEST){
USER_NAME = "2300"
PASSWORD = "1820"
completion()
@@ -166,7 +174,7 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) {
val jsonBody = """{"PatientID":$PATIENT_ID}"""
API.WIFI_CREDENTIALS
.httpPost()
- .jsonBody(jsonBody,Charsets.UTF_8)
+ .jsonBody(jsonBody, Charsets.UTF_8)
.response { request, response, result ->
val jsonString = String(response.data)
Log.d(TAG, "JSON $jsonString")
@@ -176,7 +184,7 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) {
val jsonObject = JSONObject(jsonString)
if(!jsonObject.getString("ErrorMessage").equals("null")){
val errorMsg = jsonObject.getString("ErrorMessage")
- completionListener?.let { it(false,errorMsg) }
+ completionListener?.let { it(false, errorMsg) }
}else{
jsonObject.getJSONArray("Hmg_SMS_Get_By_ProjectID_And_PatientIDList").let { array ->
@@ -186,18 +194,45 @@ class HMG_Wifi(flutterMainActivity: FlutterMainActivity) {
PASSWORD = object_.getString("Password")
completion()
}else{
- completionListener?.let { it(false,"Failed to get your internet credentials") }
+ completionListener?.let { it(false, "Failed to get your internet credentials") }
}
}
}
}
}else{
- completionListener?.let { it(false,"Failed to get your internet credentials") }
+ completionListener?.let { it(false, "Failed to get your internet credentials") }
}
}
}
+ fun forceNetworkCallOverWifi(){
+ val connectivityManager = context.applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
+// val network = Network
+// connectivityManager.activeNetwork
+ // Exit app if Network disappears.
+ // Exit app if Network disappears.
+// val networkCapabilities: NetworkCapabilities = ConnectivityManager.from(context).getNetworkCapabilities(network)
+// val networkCapabilities: NetworkCapabilities = connectivityManager.getNetworkCapabilities(network)
+
+// if (networkCapabilities == null) {
+// return
+// }
+
+ val mNetworkCallback = object : ConnectivityManager.NetworkCallback() {
+ override fun onLost(lostNetwork: Network?) {
+// if (network.equals(lostNetwork)){
+// //GlyphLayout.done(false)
+// }
+ }
+ }
+ val builder: NetworkRequest.Builder = NetworkRequest.Builder()
+// for (transportType in networkCapabilities.getTransportTypes()) {
+// builder.addTransportType(transportType)
+// }
+ connectivityManager.registerNetworkCallback(builder.build(), mNetworkCallback)
+ }
+
/*
* Helpful:
* http://stackoverflow.com/questions/6517314/android-wifi-connection-programmatically
diff --git a/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt b/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt
index ff7fdd1d..ea5ec5ec 100644
--- a/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt
+++ b/android/app/src/main/java/com/cloud/diplomaticquarterapp/utils/PlatformBridge.kt
@@ -1,7 +1,9 @@
package com.cloud.diplomaticquarterapp.utils
import android.util.Log
+import android.widget.Toast
import com.cloud.diplomaticquarterapp.FlutterMainActivity
+import com.cloud.diplomaticquarterapp.hmgwifi.HMG_Wifi
import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
@@ -22,26 +24,47 @@ class PlatformBridge(binaryMessenger: BinaryMessenger, flutterMainActivity: Flut
channel = MethodChannel(binaryMessenger, CHANNEL)
channel.setMethodCallHandler { methodCall: MethodCall, result: MethodChannel.Result ->
if (methodCall.method == METHOD_CONNECT_WIFI) {
- (methodCall.arguments as ArrayList<*>).let {
- require(it.size > 0 && (it.get(0) is String),lazyMessage = {
- "Missing or invalid arguments (Must have one argument 'String at 0'"
- })
+ connectHMGGuestWifi(methodCall,result)
- val patientId = it.get(0).toString()
- HMG_Wifi(mainActivity)
- .connectToWifiNetworkWith(patientId)
- .completionListener = { status, message ->
+ }else if (methodCall.method == METHOD_SHOW_LOADING) {
+ }else {
+ result.notImplemented()
+ }
+ }
+ }
+
+ private fun connectHMGGuestWifi(methodCall: MethodCall, result: MethodChannel.Result){
+ (methodCall.arguments as ArrayList<*>).let {
+ require(it.size > 0 && (it[0] is String),lazyMessage = {
+ "Missing or invalid arguments (Must have one argument 'String at 0'"
+ })
+
+ val patientId = it[0].toString()
+ HMGUtils.showLoading(mainActivity,true,"Connecting...")
+ HMG_Wifi(mainActivity)
+ .connectToHMGGuestNetwork(patientId){ status, message ->
+ HMGUtils.showLoading(mainActivity,false)
+ if(status){
+ HMGUtils.showMessage(mainActivity,"Error", message)
+ }else{
+ HMGUtils.showMessage(mainActivity,"Success",message)
+ }
Log.v(this.javaClass.simpleName, "$status | $message")
-
+
}
- }
+ }
+ }
- }else if (methodCall.method == METHOD_CONNECT_WIFI) {
+ private fun showLoading(methodCall: MethodCall, result: MethodChannel.Result){
+ (methodCall.arguments as ArrayList<*>).let {
+ require(it.size > 1 && (it[0] is Boolean) && (it[1] is String),lazyMessage = {
+ "Missing or invalid arguments (Must have two argument 'Boolean at 0' and 'String at 1'"
+ })
- }else {
- result.notImplemented()
- }
+ val show = it[0] as Boolean
+ val message = it[0] as String
+ HMGUtils.showLoading(mainActivity,show,message)
}
}
}
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/activity_flutter_main.xml b/android/app/src/main/res/layout/activity_flutter_main.xml
index 61249b30..bbaac9bb 100644
--- a/android/app/src/main/res/layout/activity_flutter_main.xml
+++ b/android/app/src/main/res/layout/activity_flutter_main.xml
@@ -12,11 +12,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
-
+
\ No newline at end of file
diff --git a/android/app/src/main/res/layout/loading_view.xml b/android/app/src/main/res/layout/loading_view.xml
new file mode 100644
index 00000000..da629a27
--- /dev/null
+++ b/android/app/src/main/res/layout/loading_view.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file