From d74605bbb914b31f986723c19063a0e9d4799365 Mon Sep 17 00:00:00 2001 From: Faraphel Date: Sun, 23 Jun 2024 18:36:19 +0200 Subject: [PATCH] WIP: fixing the Wi-Fi Direct feature --- .../connectivity/bwd/BwdManager.kt | 5 +- .../authentication/client.kt | 2 +- .../authentication/server.kt | 2 +- .../{ => connection}/internet/client.kt | 4 +- .../{ => connection}/internet/selection.kt | 2 +- .../{ => connection}/internet/server.kt | 4 +- .../wifiP2p/client.kt} | 2 +- .../connection/wifiP2p/selection.kt | 61 +++++++++++++++++++ .../wifiP2p/server.kt} | 2 +- .../ui/screen/communication/selection.kt | 9 +-- .../ui/screen/communication/wifiP2p/screen.kt | 37 ----------- 11 files changed, 76 insertions(+), 54 deletions(-) rename app/src/main/java/com/faraphel/tasks_valider/ui/screen/{ => communication}/authentication/client.kt (98%) rename app/src/main/java/com/faraphel/tasks_valider/ui/screen/{ => communication}/authentication/server.kt (96%) rename app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/{ => connection}/internet/client.kt (94%) rename app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/{ => connection}/internet/selection.kt (95%) rename app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/{ => connection}/internet/server.kt (97%) rename app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/{wifiP2p/client/screen.kt => connection/wifiP2p/client.kt} (95%) create mode 100644 app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/wifiP2p/selection.kt rename app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/{wifiP2p/server/screen.kt => connection/wifiP2p/server.kt} (97%) delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/screen.kt diff --git a/app/src/main/java/com/faraphel/tasks_valider/connectivity/bwd/BwdManager.kt b/app/src/main/java/com/faraphel/tasks_valider/connectivity/bwd/BwdManager.kt index e1d1994..d200d0f 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/connectivity/bwd/BwdManager.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/connectivity/bwd/BwdManager.kt @@ -43,13 +43,13 @@ class BwdManager( */ fun fromActivity(activity: Activity): BwdManager { // check if the system support WiFi-Direct - if (this.isSupported(activity)) { + if (!this.isSupported(activity)) { Log.e("wifi-p2p", "this device does not support the WiFi-Direct feature") throw BwdNotSupportedException() } // TODO(Faraphel): more check on permissions - if ( + /* if ( activity.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED || activity.checkSelfPermission(Manifest.permission.NEARBY_WIFI_DEVICES) != PackageManager.PERMISSION_GRANTED ) { @@ -59,6 +59,7 @@ class BwdManager( PERMISSION_ACCESS_FINE_LOCATION ) } + */ // get the WiFi-Direct manager val manager = activity.getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager? diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/authentication/client.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/authentication/client.kt similarity index 98% rename from app/src/main/java/com/faraphel/tasks_valider/ui/screen/authentication/client.kt rename to app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/authentication/client.kt index 98bbf25..8859f3d 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/authentication/client.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/authentication/client.kt @@ -1,4 +1,4 @@ -package com.faraphel.tasks_valider.ui.screen.authentication +package com.faraphel.tasks_valider.ui.screen.communication.authentication import android.app.Activity import android.widget.Toast diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/authentication/server.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/authentication/server.kt similarity index 96% rename from app/src/main/java/com/faraphel/tasks_valider/ui/screen/authentication/server.kt rename to app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/authentication/server.kt index 5e30ed9..de9482b 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/authentication/server.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/authentication/server.kt @@ -1,4 +1,4 @@ -package com.faraphel.tasks_valider.ui.screen.authentication +package com.faraphel.tasks_valider.ui.screen.communication.authentication import androidx.compose.foundation.layout.* import androidx.compose.material3.Button diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/client.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/internet/client.kt similarity index 94% rename from app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/client.kt rename to app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/internet/client.kt index 2f29e5d..cd53c0d 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/client.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/internet/client.kt @@ -1,4 +1,4 @@ -package com.faraphel.tasks_valider.ui.screen.communication.internet +package com.faraphel.tasks_valider.ui.screen.communication.connection.internet import android.app.Activity import androidx.compose.foundation.layout.* @@ -18,7 +18,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.faraphel.tasks_valider.connectivity.task.TaskClient import com.faraphel.tasks_valider.connectivity.task.session.TaskSession -import com.faraphel.tasks_valider.ui.screen.authentication.AuthenticationClientScreen +import com.faraphel.tasks_valider.ui.screen.communication.authentication.AuthenticationClientScreen import com.faraphel.tasks_valider.ui.screen.communication.DEFAULT_SERVER_ADDRESS import com.faraphel.tasks_valider.ui.screen.communication.DEFAULT_SERVER_PORT import com.faraphel.tasks_valider.ui.screen.communication.RANGE_SERVER_PORT diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/selection.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/internet/selection.kt similarity index 95% rename from app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/selection.kt rename to app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/internet/selection.kt index 1575f12..91247e1 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/selection.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/internet/selection.kt @@ -1,4 +1,4 @@ -package com.faraphel.tasks_valider.ui.screen.communication.internet +package com.faraphel.tasks_valider.ui.screen.communication.connection.internet import android.app.Activity import android.os.Build diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/server.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/internet/server.kt similarity index 97% rename from app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/server.kt rename to app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/internet/server.kt index 378eef5..6d4d179 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/server.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/internet/server.kt @@ -1,4 +1,4 @@ -package com.faraphel.tasks_valider.ui.screen.communication.internet +package com.faraphel.tasks_valider.ui.screen.communication.connection.internet import android.app.Activity import android.os.Build @@ -27,7 +27,7 @@ import com.faraphel.tasks_valider.database.entities.ClassEntity import com.faraphel.tasks_valider.database.entities.PersonEntity import com.faraphel.tasks_valider.database.entities.SessionEntity import com.faraphel.tasks_valider.database.populateSubjectSessionPersonTest -import com.faraphel.tasks_valider.ui.screen.authentication.AuthenticationServerScreen +import com.faraphel.tasks_valider.ui.screen.communication.authentication.AuthenticationServerScreen import com.faraphel.tasks_valider.ui.screen.communication.DEFAULT_SERVER_PORT import com.faraphel.tasks_valider.ui.screen.communication.RANGE_SERVER_PORT import com.faraphel.tasks_valider.ui.screen.task.TaskSessionController diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/client/screen.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/wifiP2p/client.kt similarity index 95% rename from app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/client/screen.kt rename to app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/wifiP2p/client.kt index b2cc732..106b866 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/client/screen.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/wifiP2p/client.kt @@ -1,4 +1,4 @@ -package com.faraphel.tasks_valider.ui.screen.communication.wifiP2p.client +package com.faraphel.tasks_valider.ui.screen.communication.connection.wifiP2p import android.app.Activity import android.net.wifi.p2p.WifiP2pConfig diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/wifiP2p/selection.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/wifiP2p/selection.kt new file mode 100644 index 0000000..30b967f --- /dev/null +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/wifiP2p/selection.kt @@ -0,0 +1,61 @@ +package com.faraphel.tasks_valider.ui.screen.communication.connection.wifiP2p + +import android.app.Activity +import androidx.compose.foundation.layout.* +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import com.faraphel.tasks_valider.connectivity.bwd.BwdManager + + +@Composable +fun CommunicationWifiP2pScreen(activity: Activity) { + val controller = rememberNavController() + + var bwdManager: BwdManager? = null + + LaunchedEffect(true) { + // start the BWD manager + bwdManager = BwdManager.fromActivity(activity) + } + + NavHost(navController = controller, startDestination = "mode") { + composable("mode") { CommunicationWifiP2pSelectContent(controller) } + // composable("client") { CommunicationWifiP2pClientScreen(activity, bwdManager) } + composable("server") { CommunicationWifiP2pServerScreen(activity, bwdManager!!) } + } +} + + + +@Composable +fun CommunicationWifiP2pSelectContent(controller: NavController) { + Column( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + // title + Text( + text = "Role", + fontSize = 32.sp + ) + + // separator + Spacer(modifier = Modifier.height(24.dp)) + + // client mode + Button(onClick = { controller.navigate("client") }) { Text("Client") } + // server mode + Button(onClick = { controller.navigate("server") }) { Text("Server") } + } +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/server/screen.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/wifiP2p/server.kt similarity index 97% rename from app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/server/screen.kt rename to app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/wifiP2p/server.kt index b3eba6d..20d428d 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/server/screen.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/connection/wifiP2p/server.kt @@ -1,4 +1,4 @@ -package com.faraphel.tasks_valider.ui.screen.communication.wifiP2p.server +package com.faraphel.tasks_valider.ui.screen.communication.connection.wifiP2p import android.app.Activity import androidx.compose.runtime.Composable diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/selection.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/selection.kt index cf8d883..5190732 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/selection.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/selection.kt @@ -1,9 +1,7 @@ package com.faraphel.tasks_valider.ui.screen.communication import android.app.Activity -import android.os.Build import android.widget.Toast -import androidx.annotation.RequiresApi import androidx.compose.foundation.layout.* import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults @@ -21,8 +19,8 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.faraphel.tasks_valider.connectivity.bwd.BwdManager import com.faraphel.tasks_valider.database.TaskDatabase -import com.faraphel.tasks_valider.ui.screen.communication.internet.CommunicationInternetSelectScreen -import com.faraphel.tasks_valider.ui.screen.communication.wifiP2p.CommunicationWifiP2pScreen +import com.faraphel.tasks_valider.ui.screen.communication.connection.internet.CommunicationInternetSelectScreen +import com.faraphel.tasks_valider.ui.screen.communication.connection.wifiP2p.CommunicationWifiP2pScreen /** @@ -48,8 +46,7 @@ fun CommunicationModeSelectionScreen(activity: Activity, database: TaskDatabase) CommunicationInternetSelectScreen(activity, database) } composable("wifi-p2p") { - val bwdManager = BwdManager.fromActivity(activity) - CommunicationWifiP2pScreen(activity, bwdManager) + CommunicationWifiP2pScreen(activity) } } } diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/screen.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/screen.kt deleted file mode 100644 index c7d4b58..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/screen.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.faraphel.tasks_valider.ui.screen.communication.wifiP2p - -import android.app.Activity -import androidx.compose.foundation.layout.Column -import androidx.compose.material3.Button -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.navigation.NavController -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import androidx.navigation.compose.rememberNavController -import com.faraphel.tasks_valider.connectivity.bwd.BwdManager -import com.faraphel.tasks_valider.ui.screen.communication.wifiP2p.client.CommunicationWifiP2pClientScreen -import com.faraphel.tasks_valider.ui.screen.communication.wifiP2p.server.CommunicationWifiP2pServerScreen - - -@Composable -fun CommunicationWifiP2pScreen(activity: Activity, bwdManager: BwdManager) { - val controller = rememberNavController() - - NavHost(navController = controller, startDestination = "mode") { - composable("mode") { CommunicationWifiP2pSelectContent(controller) } - composable("client") { CommunicationWifiP2pClientScreen(activity, bwdManager) } - composable("server") { CommunicationWifiP2pServerScreen(activity, bwdManager) } - } -} - - -@Composable -fun CommunicationWifiP2pSelectContent(controller: NavController) { - Column { - // client mode - Button(onClick = { controller.navigate("client") }) { Text("Client") } - // server mode - Button(onClick = { controller.navigate("server") }) { Text("Server") } - } -}