bluetooth check and enabling
This commit is contained in:
1 parent
025f754504
commit
89a0671cff
3 files changed
+29
-17
No files matched your search
@@ -18,6 +18,7 @@ import androidx.annotation.RequiresApi
|
|||||||
import androidx.annotation.RequiresPermission
|
import androidx.annotation.RequiresPermission
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
|
import androidx.core.app.ActivityCompat.startActivityForResult
|
||||||
import com.example.smart_watch_android.MainViewModel
|
import com.example.smart_watch_android.MainViewModel
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@@ -40,7 +41,7 @@ object BLEManager{
|
|||||||
private val deviceUUIDs = DeviceUUIDs
|
private val deviceUUIDs = DeviceUUIDs
|
||||||
private var bluetoothGatt: BluetoothGatt? = null
|
private var bluetoothGatt: BluetoothGatt? = null
|
||||||
private lateinit var bluetoothManager: BluetoothManager
|
private lateinit var bluetoothManager: BluetoothManager
|
||||||
private lateinit var bluetoothAdapter: BluetoothAdapter
|
lateinit var bluetoothAdapter: BluetoothAdapter
|
||||||
val gattCallback = object : BluetoothGattCallback() {
|
val gattCallback = object : BluetoothGattCallback() {
|
||||||
@RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
|
@RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
|
||||||
override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
|
override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
|
||||||
@@ -108,7 +109,6 @@ object BLEManager{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (missingPermissions.isNotEmpty()) {
|
if (missingPermissions.isNotEmpty()) {
|
||||||
// Berechtigungen anfordern
|
|
||||||
ActivityCompat.requestPermissions(activity, missingPermissions.toTypedArray(), 101)
|
ActivityCompat.requestPermissions(activity, missingPermissions.toTypedArray(), 101)
|
||||||
} else {
|
} else {
|
||||||
Log.d("ESP32_BLE", "Alle Bluetooth-Berechtigungen sind bereits erteilt!")
|
Log.d("ESP32_BLE", "Alle Bluetooth-Berechtigungen sind bereits erteilt!")
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
package com.example.smart_watch_android
|
package com.example.smart_watch_android
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
|
import android.bluetooth.BluetoothAdapter
|
||||||
|
import android.content.Intent
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.annotation.RequiresPermission
|
import androidx.annotation.RequiresPermission
|
||||||
@@ -17,12 +21,24 @@ import com.example.smart_watch_android.BLE.BLEManager
|
|||||||
import com.example.smart_watch_android.Screens.AppNavigation
|
import com.example.smart_watch_android.Screens.AppNavigation
|
||||||
|
|
||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
|
private val enableBluetoothLauncher = registerForActivityResult(
|
||||||
|
ActivityResultContracts.StartActivityForResult()
|
||||||
|
) { result ->
|
||||||
|
if (result.resultCode == RESULT_OK) {
|
||||||
|
Log.d("BLE_","Bluetooth enabled")
|
||||||
|
}
|
||||||
|
}
|
||||||
private val viewModel: MainViewModel by viewModels()
|
private val viewModel: MainViewModel by viewModels()
|
||||||
@RequiresApi(Build.VERSION_CODES.S)
|
@RequiresApi(Build.VERSION_CODES.S)
|
||||||
@RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
|
@RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
|
||||||
override fun onCreate(savedInstanceState: Bundle?,) {
|
override fun onCreate(savedInstanceState: Bundle?,) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
BLEManager.init(context = applicationContext, activity = this)
|
BLEManager.init(context = applicationContext, activity = this)
|
||||||
|
val adapter = BLEManager.bluetoothAdapter
|
||||||
|
if (!adapter.isEnabled) {
|
||||||
|
val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
|
||||||
|
enableBluetoothLauncher.launch(enableBtIntent)
|
||||||
|
}
|
||||||
enableEdgeToEdge()
|
enableEdgeToEdge()
|
||||||
setContent {
|
setContent {
|
||||||
MaterialTheme {
|
MaterialTheme {
|
||||||
|
|||||||
@@ -62,10 +62,6 @@ fun ConnectScreen(viewModel: MainViewModel) {
|
|||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Box(
|
|
||||||
){
|
|
||||||
Text("if the list is empty ensure you have bluetooth enabled!")
|
|
||||||
}
|
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(16.dp)
|
.padding(16.dp)
|
||||||
@@ -100,16 +96,16 @@ fun ConnectScreen(viewModel: MainViewModel) {
|
|||||||
|
|
||||||
Spacer(modifier = Modifier.height(64.dp))
|
Spacer(modifier = Modifier.height(64.dp))
|
||||||
|
|
||||||
Button(
|
Button(
|
||||||
modifier = dynamicModifier,
|
modifier = dynamicModifier,
|
||||||
onClick = {BLEManager.connectToEsp32(context, viewModel.selectedDeviceAddress) },
|
onClick = {BLEManager.connectToEsp32(context, viewModel.selectedDeviceAddress) },
|
||||||
shape = CircleShape,
|
shape = CircleShape,
|
||||||
colors = ButtonDefaults.buttonColors(containerColor = Color(0xFF5E18BE))
|
colors = ButtonDefaults.buttonColors(containerColor = Color(0xFF5E18BE))
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = "Connect",
|
text = "Connect",
|
||||||
fontSize = 32.sp
|
fontSize = 32.sp
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user