Skip to content

Commit 48c5f97

Browse files
committed
Align with ST BLE Sensor V5.2.6
Signed-off-by: Luca Pezzoni <luca.pezzoni@st.com>
1 parent cd55674 commit 48c5f97

219 files changed

Lines changed: 6009 additions & 2198 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Application ST BLE Sensors
55

66
# Compilation
77

8-
Code compiled using gradle 8.7 and JDK 17.0.11
8+
Code compiled using gradle 8.9
99

1010
set on Gradle properties the Github Login name and SSO authentication
1111
Example:
@@ -16,7 +16,7 @@ GPR_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXX
1616
For using this application is necessary to downlaod the Android BlueST-SDK from:
1717
https://github.com/STMicroelectronics/BlueSTSDK_Android
1818

19-
tag BlueST-SDK_V1.2.4
19+
tag BlueST-SDK_V1.2.8
2020

2121
and follow the instruction for compiling and publish on local maven repository the 2 libraries necessary for this application:
2222
* st-blue-sdk

app/build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ android {
3636
applicationId = "com.st.bluems"
3737
minSdk = stMinSdk
3838
targetSdk = stTargetSdk
39-
versionCode = 222
40-
versionName = "5.2.5"
39+
versionCode = 303
40+
versionName = "5.2.6"
4141

4242
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
4343
vectorDrawables { useSupportLibrary = true }
@@ -68,8 +68,8 @@ android {
6868

6969
compileOptions {
7070
isCoreLibraryDesugaringEnabled = true
71-
sourceCompatibility = JavaVersion.VERSION_17
72-
targetCompatibility = JavaVersion.VERSION_17
71+
sourceCompatibility = JavaVersion.VERSION_21
72+
targetCompatibility = JavaVersion.VERSION_21
7373
}
7474

7575
buildFeatures {

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
android:icon="@mipmap/ic_launcher"
2424
android:label="@string/app_name"
2525
android:requestLegacyExternalStorage="true"
26+
android:enableOnBackInvokedCallback="true"
2627
android:roundIcon="@mipmap/ic_launcher_round"
2728
android:supportsRtl="true"
29+
tools:targetApi="35"
2830
android:theme="@style/Theme.BlueMS">
2931

3032
<meta-data
@@ -40,6 +42,7 @@
4042
android:name=".MainActivity"
4143
android:configChanges="orientation"
4244
android:exported="true"
45+
android:windowSoftInputMode="adjustResize"
4346
android:screenOrientation="portrait"
4447
android:theme="@style/Theme.BlueMS.Starting">
4548
<intent-filter>

app/src/main/java/com/st/bluems/MainActivity.kt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,18 @@
77
*/
88
package com.st.bluems
99

10+
import android.graphics.Color
11+
import android.os.Build
1012
import android.os.Bundle
11-
//import android.util.Log
12-
//import android.widget.Toast
13+
import androidx.activity.SystemBarStyle
14+
import androidx.activity.enableEdgeToEdge
1315
import androidx.activity.viewModels
1416
import androidx.appcompat.app.AppCompatActivity
1517
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
1618
import androidx.navigation.NavController
1719
import androidx.navigation.NavOptions
1820
import androidx.navigation.findNavController
1921
import androidx.navigation.navOptions
20-
//import com.google.firebase.Firebase
21-
//import com.google.firebase.remoteconfig.ConfigUpdate
22-
//import com.google.firebase.remoteconfig.ConfigUpdateListener
23-
//import com.google.firebase.remoteconfig.FirebaseRemoteConfig
24-
//import com.google.firebase.remoteconfig.FirebaseRemoteConfigException
25-
//import com.google.firebase.remoteconfig.get
26-
//import com.google.firebase.remoteconfig.remoteConfig
27-
//import com.google.firebase.remoteconfig.remoteConfigSettings
2822
import com.st.bluems.ui.home.HomeFragmentDirections
2923
import com.st.core.GlobalConfig
3024
import com.st.core.api.ApplicationAnalyticsService.ApplicationNameEtna
@@ -48,6 +42,15 @@ class MainActivity : AppCompatActivity() {
4842
private lateinit var navController: NavController
4943

5044
override fun onCreate(savedInstanceState: Bundle?) {
45+
46+
installSplashScreen()
47+
48+
enableEdgeToEdge(statusBarStyle = SystemBarStyle.dark(Color.TRANSPARENT), navigationBarStyle = SystemBarStyle.light(Color.TRANSPARENT,Color.TRANSPARENT))
49+
50+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
51+
window.isNavigationBarContrastEnforced = false
52+
}
53+
5154
super.onCreate(savedInstanceState)
5255

5356
if(BuildConfig.DEBUG) {
@@ -132,7 +135,6 @@ class MainActivity : AppCompatActivity() {
132135

133136
viewModel.reportApplicationAnalytics(applicationContext)
134137

135-
installSplashScreen()
136138
setContentView(R.layout.activity_main)
137139

138140
navController = findNavController(R.id.nav_host_fragment_content_main)

app/src/main/java/com/st/bluems/ui/composable/DeviceList.kt

Lines changed: 57 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ import android.widget.Toast
1717
import androidx.activity.compose.rememberLauncherForActivityResult
1818
import androidx.activity.result.contract.ActivityResultContracts
1919
import androidx.compose.animation.core.*
20-
import androidx.compose.foundation.ExperimentalFoundationApi
2120
import androidx.compose.foundation.layout.*
2221
import androidx.compose.foundation.lazy.LazyColumn
2322
import androidx.compose.foundation.lazy.itemsIndexed
2423
import androidx.compose.material.icons.Icons
24+
import androidx.compose.material.icons.filled.FilterList
2525
import androidx.compose.material.icons.filled.Sync
2626
import androidx.compose.material3.*
2727
import androidx.compose.runtime.*
@@ -49,9 +49,12 @@ import com.st.ui.theme.LocalDimensions
4949
import com.st.ui.theme.Grey6
5050
import androidx.compose.material3.FloatingActionButton
5151
import androidx.compose.material3.Scaffold
52+
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
5253
import androidx.compose.ui.unit.IntOffset
5354
import androidx.navigation.NavOptions
5455
import androidx.navigation.navOptions
56+
import com.st.ui.composables.BlueMSPullToRefreshBox
57+
import com.st.ui.theme.PrimaryBlue
5558
import com.st.ui.theme.SecondaryBlue
5659

5760
@Composable
@@ -122,13 +125,18 @@ fun DeviceListScreen(
122125

123126
val navOptions: NavOptions = navOptions {
124127
anim {
125-
enter = com.st.ui.R.anim.slide_in_from_left
128+
//enter = com.st.ui.R.anim.slide_in_from_left
129+
enter = com.st.ui.R.anim.fade_in
126130
exit = com.st.ui.R.anim.fade_out
127131
popEnter = com.st.ui.R.anim.fade_in
128-
popExit = com.st.ui.R.anim.slide_out_to_left
132+
//popExit = com.st.ui.R.anim.slide_out_to_left
133+
popExit = com.st.ui.R.anim.fade_out
129134
}
130135
}
131-
navController.navigate(directions = HomeFragmentDirections.actionHomeFragmentToCatalog(), navOptions = navOptions)
136+
navController.navigate(
137+
directions = HomeFragmentDirections.actionHomeFragmentToCatalog(),
138+
navOptions = navOptions
139+
)
132140

133141
// navController.navigate(
134142
// HomeFragmentDirections.actionHomeFragmentToCatalog()
@@ -502,24 +510,21 @@ fun DeviceList(
502510

503511
Scaffold(
504512
modifier = modifier,
505-
// floatingActionButtonPosition = FabPosition.End,
506-
// floatingActionButton = {
507-
// DeviceScanFAB(
508-
// isLoading = isLoading,
509-
// onStartScan = onStartScan
510-
// )
511-
// },
512-
bottomBar = {
513-
MainBottomBar(
513+
contentWindowInsets = WindowInsets.statusBars,
514+
floatingActionButtonPosition = FabPosition.End,
514515
floatingActionButton = {
515-
DeviceScanFAB(
516-
isLoading = isLoading,
517-
onStartScan = onStartScan
518-
)
519-
},
520-
openCatalog = goToCatalog,
521-
openFilter = { openFilterDialog = true }
522-
)
516+
FloatingActionButton(
517+
modifier = Modifier.padding(
518+
bottom = WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding()
519+
),
520+
containerColor = SecondaryBlue,
521+
onClick = { openFilterDialog = true }) {
522+
Icon(
523+
tint = PrimaryBlue,
524+
imageVector = Icons.Default.FilterList,
525+
contentDescription = null
526+
)
527+
}
523528
},
524529
topBar = {
525530
MainTopBar(
@@ -538,7 +543,8 @@ fun DeviceList(
538543
readBetaCatalog = readBetaCatalog,
539544
readReleaseCatalog = readReleaseCatalog,
540545
switchVersionBetaRelease = switchVersionBetaRelease,
541-
switchServerForced = switchServerForced
546+
switchServerForced = switchServerForced,
547+
goToCatalog = goToCatalog
542548
) {
543549
pickFileLauncher.launch(
544550
arrayOf(
@@ -551,11 +557,15 @@ fun DeviceList(
551557
DeviceList(
552558
modifier = Modifier
553559
.fillMaxSize()
554-
.padding(paddingValues = paddingValues),
560+
.consumeWindowInsets(paddingValues).padding(paddingValues),
561+
//.padding(paddingValues = paddingValues),
555562
filteredDevices = filteredDevices,
556563
pinnedDevices = pinnedDevices,
557564
onPinChange = onPinChange,
558565
goToCatalog = goToCatalog,
566+
isLoading = isLoading,
567+
isBetaRelease = isBetaRelease,
568+
onStartScan = onStartScan,
559569
onNodeSelected = onNodeSelected
560570
)
561571
}
@@ -570,20 +580,32 @@ fun DeviceList(
570580
}
571581
}
572582

573-
@OptIn(ExperimentalFoundationApi::class)
583+
@OptIn(ExperimentalMaterial3Api::class)
574584
@Composable
575585
fun DeviceList(
576586
modifier: Modifier = Modifier,
577587
filteredDevices: List<Node>,
578588
pinnedDevices: List<String>,
579589
onPinChange: (String, Boolean) -> Unit,
580590
goToCatalog: () -> Unit = { /** NOOP**/ },
591+
isLoading: Boolean = false,
592+
isBetaRelease: Boolean = false,
593+
onStartScan: () -> Unit = { /** NOOP**/ },
581594
onNodeSelected: (Node) -> Unit = { /** NOOP**/ }
582595
) {
596+
597+
598+
val pullRefreshState = rememberPullToRefreshState()
599+
583600
Column(
584601
modifier = modifier
585602
) {
586-
Box(modifier = Modifier) {
603+
BlueMSPullToRefreshBox(
604+
state = pullRefreshState,
605+
isRefreshing = isLoading,
606+
onRefresh = onStartScan,
607+
isBetaRelease = isBetaRelease
608+
) {
587609
LazyColumn(
588610
modifier = Modifier.fillMaxSize(),
589611
contentPadding = PaddingValues(all = LocalDimensions.current.paddingNormal),
@@ -633,10 +655,18 @@ fun DeviceList(
633655
)
634656
}
635657
}
658+
659+
item {
660+
Spacer(
661+
Modifier.windowInsetsBottomHeight(
662+
WindowInsets.systemBars
663+
)
664+
)
665+
}
666+
}
636667
}
637668
}
638669
}
639-
}
640670

641671
private const val DEGREES = 360f
642672
private const val DURATION_MILLIS = 1500
@@ -646,7 +676,7 @@ fun DeviceScanFAB(
646676
isLoading: Boolean,
647677
onStartScan: () -> Unit
648678
) {
649-
var currentRotation by remember { mutableStateOf(value = 0f) }
679+
var currentRotation by remember { mutableFloatStateOf(value = 0f) }
650680
val rotation = remember { Animatable(currentRotation) }
651681

652682
LaunchedEffect(key1 = isLoading) {

app/src/main/java/com/st/bluems/ui/composable/MainBottomBar.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ fun MainBottomBar(
4545
label = stringResource(id = R.string.st_home_bottomBar_catalog),
4646
onClick = openCatalog
4747
)
48-
//Spacer(modifier = Modifier.size(LocalDimensions.current.paddingNormal))
4948
Spacer(modifier = Modifier.weight(weight = 0.20f))
5049

5150
floatingActionButton()

app/src/main/java/com/st/bluems/ui/composable/MainTopBar.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
1414
import androidx.compose.foundation.layout.height
1515
import androidx.compose.foundation.layout.padding
1616
import androidx.compose.material.icons.Icons
17-
import androidx.compose.material.icons.filled.ManageAccounts
17+
import androidx.compose.material.icons.filled.ContentCopy
18+
import androidx.compose.material.icons.filled.MoreVert
1819
import androidx.compose.material3.*
1920
import androidx.compose.material3.TopAppBarDefaults.topAppBarColors
2021
import androidx.compose.runtime.*
@@ -50,6 +51,7 @@ fun MainTopBar(
5051
enableDisableHiddenDemos: () -> Unit = { /** NOOP **/ },
5152
login: () -> Unit = { /** NOOP **/ },
5253
logout: () -> Unit = { /** NOOP **/ },
54+
goToCatalog: () -> Unit = { /** NOOP **/ },
5355
onAddCatalogEntryFromFile: () -> Unit = { /** NOOP **/ }
5456
) {
5557
val actions by rememberActions(
@@ -78,9 +80,15 @@ fun MainTopBar(
7880
Text(text = stringResource(id = R.string.st_home_deviceList_screenTitle))
7981
},
8082
actions = {
83+
IconButton(onClick = goToCatalog) {
84+
Icon(
85+
Icons.Default.ContentCopy,
86+
contentDescription = "Go To Catalog",
87+
)
88+
}
8189
BlueMsMenuActions(
8290
actions = actions,
83-
menuIcon = Icons.Default.ManageAccounts
91+
menuIcon = Icons.Default.MoreVert
8492
) {
8593
Column(
8694
modifier = Modifier.fillMaxWidth(),

app/src/main/java/com/st/bluems/ui/home/HomeViewModel.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,13 @@ class HomeViewModel @Inject constructor(
172172
}
173173

174174
fun readBetaCatalog() {
175+
// viewModelScope.launch {
176+
// val url: String = BuildConfig.BLUESTSDK_DB_BASE_BETA_URL
177+
// blueManager.reset(url)
178+
// _boardsDescription.value = blueManager.getBoardsDescription()
179+
// //Log.i("DB","readBetaCatalog checkBoardsCatalogPresence = ${ _boardsDescription.value.size}")
180+
//
181+
// }
175182
//checkBoardsCatalogPresence()
176183
}
177184

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ buildscript {
1111
extra.apply {
1212
// Define versions in a single place
1313
set("stMinSdk", 26)
14-
set("stCompileSdk", 34)
15-
set("stTargetSdk", 34)
14+
set("stCompileSdk", 35)
15+
set("stTargetSdk", 35)
1616
}
1717

1818
repositories {

extra/st_new_demo_template_compose/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ android {
5252

5353
compileOptions {
5454
isCoreLibraryDesugaringEnabled = true
55-
sourceCompatibility = JavaVersion.VERSION_17
56-
targetCompatibility = JavaVersion.VERSION_17
55+
sourceCompatibility = JavaVersion.VERSION_21
56+
targetCompatibility = JavaVersion.VERSION_21
5757
}
5858

5959
buildFeatures {

0 commit comments

Comments
 (0)