Implemented Connection with Wi-Fi Direct and IP #9
11 changed files with 76 additions and 54 deletions
|
@ -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?
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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") }
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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") }
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue