mirror of
https://github.com/YTVanced/VancedMicroG
synced 2024-11-30 23:23:01 +00:00
EN: Don't scan persistently
This commit is contained in:
parent
f9cc9249d5
commit
4663d61007
2 changed files with 31 additions and 12 deletions
|
@ -11,6 +11,11 @@ import java.util.*
|
|||
const val TAG = "ExposureNotification"
|
||||
val SERVICE_UUID = ParcelUuid(UUID.fromString("0000FD6F-0000-1000-8000-00805F9B34FB"))
|
||||
|
||||
const val SCANNING_INTERVAL = 3 * 60 // Google uses 5m, but we use a slightly different scanning and reporting system
|
||||
const val SCANNING_INTERVAL_MS = SCANNING_INTERVAL * 1000L
|
||||
const val SCANNING_TIME = 20 // Google uses 4s + 13s (if Bluetooth is used by something else)
|
||||
const val SCANNING_TIME_MS = SCANNING_TIME * 1000L
|
||||
|
||||
const val ROLLING_WINDOW_LENGTH = 10 * 60
|
||||
const val ROLLING_WINDOW_LENGTH_MS = ROLLING_WINDOW_LENGTH * 1000
|
||||
const val ROLLING_PERIOD = 144
|
||||
|
|
|
@ -14,7 +14,9 @@ import android.content.Context
|
|||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.os.Build
|
||||
import android.os.Handler
|
||||
import android.os.IBinder
|
||||
import android.os.Looper
|
||||
import android.util.Log
|
||||
import org.microg.gms.common.ForegroundServiceContext
|
||||
import java.io.FileDescriptor
|
||||
|
@ -23,8 +25,8 @@ import java.util.*
|
|||
|
||||
@TargetApi(21)
|
||||
class ScannerService : Service() {
|
||||
private var started = false
|
||||
private var startTime = 0L
|
||||
private var scanning = false
|
||||
private var lastStartTime = 0L
|
||||
private var seenAdvertisements = 0L
|
||||
private var lastAdvertisement = 0L
|
||||
private lateinit var database: ExposureDatabase
|
||||
|
@ -55,6 +57,9 @@ class ScannerService : Service() {
|
|||
}
|
||||
}
|
||||
}
|
||||
private val handler = Handler(Looper.getMainLooper())
|
||||
private val stopLaterRunnable = Runnable { stopScan() }
|
||||
private val startLaterRunnable = Runnable { startScan() }
|
||||
|
||||
private val scanner: BluetoothLeScanner?
|
||||
get() = getDefaultAdapter()?.bluetoothLeScanner
|
||||
|
@ -101,9 +106,11 @@ class ScannerService : Service() {
|
|||
|
||||
@Synchronized
|
||||
private fun startScan() {
|
||||
if (started) return
|
||||
if (scanning) return
|
||||
val scanner = scanner ?: return
|
||||
Log.d(TAG, "Starting scanner for service $SERVICE_UUID")
|
||||
handler.removeCallbacks(startLaterRunnable)
|
||||
seenAdvertisements = 0
|
||||
scanner.startScan(
|
||||
listOf(ScanFilter.Builder()
|
||||
.setServiceUuid(SERVICE_UUID)
|
||||
|
@ -114,25 +121,32 @@ class ScannerService : Service() {
|
|||
.build(),
|
||||
callback
|
||||
)
|
||||
started = true
|
||||
startTime = System.currentTimeMillis()
|
||||
scanning = true
|
||||
lastStartTime = System.currentTimeMillis()
|
||||
handler.postDelayed(stopLaterRunnable, SCANNING_TIME_MS)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun stopScan() {
|
||||
if (!started) return
|
||||
if (!scanning) return
|
||||
Log.d(TAG, "Stopping scanner for service $SERVICE_UUID")
|
||||
started = false
|
||||
handler.removeCallbacks(stopLaterRunnable)
|
||||
scanning = false
|
||||
scanner?.stopScan(callback)
|
||||
if (ExposurePreferences(this).enabled) {
|
||||
handler.postDelayed(startLaterRunnable, ((lastStartTime + SCANNING_INTERVAL_MS) - System.currentTimeMillis()).coerceIn(0, SCANNING_INTERVAL_MS))
|
||||
}
|
||||
}
|
||||
|
||||
override fun dump(fd: FileDescriptor?, writer: PrintWriter?, args: Array<out String>?) {
|
||||
writer?.println("Started: $started")
|
||||
if (started) {
|
||||
writer?.println("Since ${Date(startTime)}")
|
||||
writer?.println("Seen advertisements: $seenAdvertisements")
|
||||
writer?.println("Last advertisement: ${Date(lastAdvertisement)}")
|
||||
writer?.println("Scanning now: $scanning")
|
||||
writer?.println("Last scan start: ${Date(lastStartTime)}")
|
||||
if (Build.VERSION.SDK_INT >= 29) {
|
||||
writer?.println("Scan start pending: ${handler.hasCallbacks(startLaterRunnable)}")
|
||||
writer?.println("Scan stop pending: ${handler.hasCallbacks(stopLaterRunnable)}")
|
||||
}
|
||||
writer?.println("Seen advertisements since last scan start: $seenAdvertisements")
|
||||
writer?.println("Last advertisement seen: ${Date(lastAdvertisement)}")
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
Loading…
Reference in a new issue