Loading play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsAppPreferencesFragment.kt +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ class ExposureNotificationsAppPreferencesFragment : PreferenceFragmentCompat() { val encountersLine = if (merged.isEmpty()) { getString(R.string.pref_exposure_app_last_report_summary_encounters_no) } else { database.findAllMeasuredExposures(config.first).merge().map { merged.map { val riskScore = it.getRiskScore(config.second.orDefault()) "· " + getString(R.string.pref_exposure_app_last_report_summary_encounters_line, DateUtils.formatDateRange(requireContext(), it.timestamp, it.timestamp + it.durationInMinutes * 60 * 1000L, DateUtils.FORMAT_SHOW_TIME or DateUtils.FORMAT_SHOW_DATE), riskScore) }.joinToString("<br>").let { getString(R.string.pref_exposure_app_last_report_summary_encounters_prefix, merged.size) + "<br>$it<br><i>" + getString(R.string.pref_exposure_app_last_report_summary_encounters_suffix) + "</i>" } Loading play-services-nearby-core-ui/src/main/res/xml/preferences_exposure_notifications_app.xml +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ android:title="@string/open_app" /> </PreferenceCategory> <PreferenceCategory android:layout="@layout/preference_category_no_label"> <Preference <org.microg.gms.ui.TextPreference android:key="pref_exposure_app_report" android:selectable="false" tools:summary="@string/pref_exposure_app_last_report_summary_encounters_no" Loading play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureDatabase.kt +3 −1 Original line number Diff line number Diff line Loading @@ -393,9 +393,11 @@ class ExposureDatabase private constructor(private val context: Context) : SQLit var processed = 0 var found = 0 var riskLogged = -1 var startLogged = -1 for (key in keys) { if (key.transmissionRiskLevel > riskLogged) { if (key.transmissionRiskLevel > riskLogged || key.rollingStartIntervalNumber > startLogged) { riskLogged = key.transmissionRiskLevel startLogged = key.rollingStartIntervalNumber Log.d(TAG, "First key with risk ${key.transmissionRiskLevel}: ${ByteString.of(*key.keyData).hex()} starts ${key.rollingStartIntervalNumber}") } if ((key.rollingStartIntervalNumber + key.rollingPeriod).toLong() * ROLLING_WINDOW_LENGTH_MS + ALLOWED_KEY_OFFSET_MS < oldestRpi) { Loading play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/MeasuredExposure.kt +3 −3 Original line number Diff line number Diff line Loading @@ -21,8 +21,8 @@ fun List<MeasuredExposure>.merge(): List<MergedExposure> { val result = arrayListOf<MergedExposure>() for (key in keys) { var merged: MergedExposure? = null for (exposure in filter { it.key == key }.sortedBy { it.timestamp }) { if (merged != null && merged.timestamp + MergedExposure.MAXIMUM_DURATION + ROLLING_WINDOW_LENGTH_MS > exposure.timestamp) { for (exposure in filter { it.key == key }.distinctBy { it.timestamp }.sortedBy { it.timestamp }) { if (merged != null && merged.timestamp + MergedExposure.MAXIMUM_DURATION > exposure.timestamp) { merged += exposure } else { if (merged != null) { Loading @@ -30,7 +30,7 @@ fun List<MeasuredExposure>.merge(): List<MergedExposure> { } merged = MergedExposure(key, exposure.timestamp, exposure.txPower, exposure.confidence, listOf(MergedSubExposure(exposure.attenuation, exposure.duration))) } if (merged.durationInMinutes > 30) { if (merged.durationInMinutes >= 30) { result.add(merged) merged = null } Loading Loading
play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsAppPreferencesFragment.kt +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ class ExposureNotificationsAppPreferencesFragment : PreferenceFragmentCompat() { val encountersLine = if (merged.isEmpty()) { getString(R.string.pref_exposure_app_last_report_summary_encounters_no) } else { database.findAllMeasuredExposures(config.first).merge().map { merged.map { val riskScore = it.getRiskScore(config.second.orDefault()) "· " + getString(R.string.pref_exposure_app_last_report_summary_encounters_line, DateUtils.formatDateRange(requireContext(), it.timestamp, it.timestamp + it.durationInMinutes * 60 * 1000L, DateUtils.FORMAT_SHOW_TIME or DateUtils.FORMAT_SHOW_DATE), riskScore) }.joinToString("<br>").let { getString(R.string.pref_exposure_app_last_report_summary_encounters_prefix, merged.size) + "<br>$it<br><i>" + getString(R.string.pref_exposure_app_last_report_summary_encounters_suffix) + "</i>" } Loading
play-services-nearby-core-ui/src/main/res/xml/preferences_exposure_notifications_app.xml +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ android:title="@string/open_app" /> </PreferenceCategory> <PreferenceCategory android:layout="@layout/preference_category_no_label"> <Preference <org.microg.gms.ui.TextPreference android:key="pref_exposure_app_report" android:selectable="false" tools:summary="@string/pref_exposure_app_last_report_summary_encounters_no" Loading
play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureDatabase.kt +3 −1 Original line number Diff line number Diff line Loading @@ -393,9 +393,11 @@ class ExposureDatabase private constructor(private val context: Context) : SQLit var processed = 0 var found = 0 var riskLogged = -1 var startLogged = -1 for (key in keys) { if (key.transmissionRiskLevel > riskLogged) { if (key.transmissionRiskLevel > riskLogged || key.rollingStartIntervalNumber > startLogged) { riskLogged = key.transmissionRiskLevel startLogged = key.rollingStartIntervalNumber Log.d(TAG, "First key with risk ${key.transmissionRiskLevel}: ${ByteString.of(*key.keyData).hex()} starts ${key.rollingStartIntervalNumber}") } if ((key.rollingStartIntervalNumber + key.rollingPeriod).toLong() * ROLLING_WINDOW_LENGTH_MS + ALLOWED_KEY_OFFSET_MS < oldestRpi) { Loading
play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/MeasuredExposure.kt +3 −3 Original line number Diff line number Diff line Loading @@ -21,8 +21,8 @@ fun List<MeasuredExposure>.merge(): List<MergedExposure> { val result = arrayListOf<MergedExposure>() for (key in keys) { var merged: MergedExposure? = null for (exposure in filter { it.key == key }.sortedBy { it.timestamp }) { if (merged != null && merged.timestamp + MergedExposure.MAXIMUM_DURATION + ROLLING_WINDOW_LENGTH_MS > exposure.timestamp) { for (exposure in filter { it.key == key }.distinctBy { it.timestamp }.sortedBy { it.timestamp }) { if (merged != null && merged.timestamp + MergedExposure.MAXIMUM_DURATION > exposure.timestamp) { merged += exposure } else { if (merged != null) { Loading @@ -30,7 +30,7 @@ fun List<MeasuredExposure>.merge(): List<MergedExposure> { } merged = MergedExposure(key, exposure.timestamp, exposure.txPower, exposure.confidence, listOf(MergedSubExposure(exposure.attenuation, exposure.duration))) } if (merged.durationInMinutes > 30) { if (merged.durationInMinutes >= 30) { result.add(merged) merged = null } Loading