@@ -24,6 +24,8 @@ import com.google.android.material.card.MaterialCardView
2424import com.google.android.material.color.MaterialColors
2525import kotlinx.coroutines.CoroutineScope
2626import kotlinx.coroutines.Dispatchers
27+ import kotlinx.coroutines.async
28+ import kotlinx.coroutines.awaitAll
2729import kotlinx.coroutines.launch
2830import kotlinx.coroutines.withContext
2931import org.akanework.checker.utils.CheckerUtils
@@ -43,6 +45,7 @@ class MainActivity : Activity() {
4345 private lateinit var headerCardFrame: MaterialCardView
4446
4547 private val abnormalitiesList = mutableListOf<String >()
48+ private val abnormalitiesAdapter = EntryAdapter (abnormalitiesList)
4649
4750 private fun changeTitleStatus (status : Int ) {
4851 var titleString = getString(R .string.normal_title)
@@ -136,13 +139,17 @@ class MainActivity : Activity() {
136139 val widevineAlgoTextView = findViewById<TextView >(R .id.widevine_algo)
137140
138141 val connectivityRadioTextView = findViewById<TextView >(R .id.connectivity_radio)
139- val connectivityGnssHalStatus = findViewById<TextView >(R .id.connectivity_gps)
142+ val connectivityGNSSHalStatus = findViewById<TextView >(R .id.connectivity_gps)
140143
141144 val mediaHdrTypeTextView = findViewById<TextView >(R .id.media_hdr_types)
142145 val mediaWideColorGamutTextView = findViewById<TextView >(R .id.media_wide_color_gamut)
143146
147+ val securitySELinuxStateTextView = findViewById<TextView >(R .id.security_selinux_state)
148+
144149 val abnormalitiesFrame = findViewById<MaterialCardView >(R .id.abnormal_frame)
145150 val abnormalitiesRecyclerView = findViewById<RecyclerView >(R .id.abnormal_recyclerview)
151+ abnormalitiesRecyclerView.layoutManager = LinearLayoutManager (this @MainActivity)
152+ abnormalitiesRecyclerView.adapter = abnormalitiesAdapter
146153
147154 // Set up basic info
148155 val basicAndroidVersion = Build .VERSION .RELEASE
@@ -189,14 +196,16 @@ class MainActivity : Activity() {
189196
190197 // Set up radio info
191198 val connectivityRadioVersion = Build .getRadioVersion().substringAfterLast(' ,' )
192- CoroutineScope (Dispatchers .Default ).launch {
193- val connectivityGnssVersionRawList = CheckerUtils .checkGnssHal()
194- val connectivityGnssVersionList = connectivityGnssVersionRawList
199+ val connectivityGNSSQueryJob = CoroutineScope (Dispatchers .Default ).async {
200+ val connectivityGNSSVersionRawList = CheckerUtils .checkGnssHal()
201+ val connectivityGNSSVersionList = connectivityGNSSVersionRawList
195202 .filter { it.contains(" android.hardware.gnss" ) }
196- .joinToString(separator = " \n " ) {
197- it.substringBefore(" :" ).substringAfterLast(" ? " ).trim()
203+ .map {
204+ it.substringBefore(" :" ).substringAfterLast(" ? " ).substringAfterLast( " Y " ). trim()
198205 }
199- if (connectivityGnssVersionRawList.isNotEmpty()) {
206+ .distinct()
207+ .joinToString(separator = " \n " )
208+ if (connectivityGNSSVersionRawList.isNotEmpty()) {
200209 withContext(Dispatchers .Main ) {
201210 val anim = AlphaAnimation (1.0f , 0.0f )
202211 anim.duration = 200
@@ -207,27 +216,18 @@ class MainActivity : Activity() {
207216 override fun onAnimationEnd (animation : Animation ? ) {}
208217 override fun onAnimationStart (animation : Animation ? ) {}
209218 override fun onAnimationRepeat (animation : Animation ? ) {
210- connectivityGnssHalStatus .text =
211- " ${getString(R .string.connectivity_gnss)} \n $connectivityGnssVersionList "
219+ connectivityGNSSHalStatus .text =
220+ " ${getString(R .string.connectivity_gnss)} \n $connectivityGNSSVersionList "
212221 }
213222 })
214223
215- connectivityGnssHalStatus .startAnimation(anim)
224+ connectivityGNSSHalStatus .startAnimation(anim)
216225 }
217226 } else {
218227 withContext(Dispatchers .Main ) {
219228 abnormalitiesList.add(getString(R .string.abnormalities_gnss_hal_broken))
220- val abnormalitiesAdapter = EntryAdapter (abnormalitiesList)
221- abnormalitiesRecyclerView.layoutManager = LinearLayoutManager (this @MainActivity)
222- abnormalitiesRecyclerView.adapter = abnormalitiesAdapter
223- abnormalitiesFrame.visibility = View .VISIBLE
224229 }
225230 }
226- if (abnormalitiesList.isEmpty()) {
227- changeTitleStatus(1 )
228- } else {
229- changeTitleStatus(2 )
230- }
231231 }
232232 connectivityRadioTextView.text =
233233 " ${getString(R .string.connectivity_radio)} - $connectivityRadioVersion "
@@ -261,6 +261,25 @@ class MainActivity : Activity() {
261261 mediaWideColorGamutTextView.text =
262262 " ${getString(R .string.media_wide_color_gamut)} - $mediaIsDeviceColorGamut "
263263
264+ // Set up security info
265+ val securitySELinuxQueryJob = CoroutineScope (Dispatchers .Default ).async {
266+ val securityIsSELinuxEnforcing = CheckerUtils .isSELinuxEnforcing()
267+ withContext(Dispatchers .Main ) {
268+ securitySELinuxStateTextView.text = getString(R .string.security_selinux_state) + " - " +
269+ when (securityIsSELinuxEnforcing) {
270+ 0 -> " Enforcing"
271+ 1 -> {
272+ abnormalitiesList.add(getString(R .string.abnormalities_selinux_not_enforcing))
273+ " Permissive"
274+ }
275+ 2 -> {
276+ " Invalid"
277+ }
278+ else -> throw IllegalArgumentException ()
279+ }
280+ }
281+ }
282+
264283 // Get abnormalities
265284 val verifiedBootStat = SystemProperties .read(" ro.boot.verifiedbootstate" , " unknown" )
266285 val isDrmPassing =
@@ -276,11 +295,19 @@ class MainActivity : Activity() {
276295 abnormalitiesList.add(getString(R .string.abnormalities_baseband_broken))
277296 }
278297
279- if (abnormalitiesList.size != 0 ) {
280- val abnormalitiesAdapter = EntryAdapter (abnormalitiesList)
281- abnormalitiesRecyclerView.layoutManager = LinearLayoutManager (this )
282- abnormalitiesRecyclerView.adapter = abnormalitiesAdapter
283- abnormalitiesFrame.visibility = View .VISIBLE
298+ CoroutineScope (Dispatchers .Default ).launch {
299+ awaitAll(connectivityGNSSQueryJob, securitySELinuxQueryJob)
300+ withContext(Dispatchers .Main ) {
301+ if (abnormalitiesList.isEmpty()) {
302+ changeTitleStatus(1 )
303+ } else {
304+ changeTitleStatus(2 )
305+ }
306+ if (abnormalitiesList.size != 0 ) {
307+ abnormalitiesAdapter.notifyItemRangeInserted(0 , abnormalitiesList.size)
308+ abnormalitiesFrame.visibility = View .VISIBLE
309+ }
310+ }
284311 }
285312 }
286313
0 commit comments