Ho scaricato il codice sorgente AOSP per Lollipop 5.0. In api livello 21, sotto le impostazioni di scansione a basso consumo di bluetooth ci sono tre opzioni per la scansione dei dispositivi ble - SCAN_MODE_BALANCED, SCAN_MODE_LOW_LATENCY, SCAN_MODE_LOW_POWER
. Sono basati su diversi intervalli di scansione e valori della finestra di scansione? In tal caso, dove posso trovare i valori definiti per queste macro nella directory del codice sorgente.Android AOSP - Definizione dell'intervallo di scansione e finestra di scansione nel codice sorgente Android
risposta
ho trovato di sotto dei valori in http://androidxref.com/5.0.0_r2/xref/packages/apps/Bluetooth/src/com/android/bluetooth/gatt/ScanManager.java mentre greping la parola chiave "SCAN_MODE_BALANCED":
/**
* Scan params corresponding to regular scan setting
*/
private static final int SCAN_MODE_LOW_POWER_WINDOW_MS = 500;
private static final int SCAN_MODE_LOW_POWER_INTERVAL_MS = 5000;
private static final int SCAN_MODE_BALANCED_WINDOW_MS = 2000;
private static final int SCAN_MODE_BALANCED_INTERVAL_MS = 5000;
private static final int SCAN_MODE_LOW_LATENCY_WINDOW_MS = 5000;
private static final int SCAN_MODE_LOW_LATENCY_INTERVAL_MS = 5000;
/**
* Scan params corresponding to batch scan setting
*/
private static final int SCAN_MODE_BATCH_LOW_POWER_WINDOW_MS = 1500;
private static final int SCAN_MODE_BATCH_LOW_POWER_INTERVAL_MS = 150000;
private static final int SCAN_MODE_BATCH_BALANCED_WINDOW_MS = 1500;
private static final int SCAN_MODE_BATCH_BALANCED_INTERVAL_MS = 15000;
private static final int SCAN_MODE_BATCH_LOW_LATENCY_WINDOW_MS = 1500;
private static final int SCAN_MODE_BATCH_LOW_LATENCY_INTERVAL_MS = 5000;
checkout anche fuori ScanManager.ScanNative.configureRegularScanParams(). Due parametri scanWindow
e scanInterval
sono impostati in base all'impostazione di scansione (ScanSettings.SCAN_MODE_LOW_POWER
, ScanSettings.SCAN_MODE_BALANCED
, ScanSettings.SCAN_MODE_LOW_LATENCY
), convertiti in unità BLE e quindi passati a gattSetScanParametersNative().
Spero che questo aiuti.
Non sono sicuro se questo è accurato o se si può anche utilizzare per trovare i valori che avete bisogno, ma ho trovato un po 'di code from Google regarding scanning settings:
// Constants for Scan Cycle
// Low Power: 2.5 minute period with 1.5 seconds active (1% duty cycle)
/* @VisibleForTesting */ static final int LOW_POWER_IDLE_MILLIS = 148500;
/* @VisibleForTesting */ static final int LOW_POWER_ACTIVE_MILLIS = 1500;
// Balanced: 15 second period with 1.5 second active (10% duty cycle)
/* @VisibleForTesting */ static final int BALANCED_IDLE_MILLIS = 13500;
/* @VisibleForTesting */ static final int BALANCED_ACTIVE_MILLIS = 1500;
// Low Latency: 1.67 second period with 1.5 seconds active (90% duty cycle)
/* @VisibleForTesting */ static final int LOW_LATENCY_IDLE_MILLIS = 167;
/* @VisibleForTesting */ static final int LOW_LATENCY_ACTIVE_MILLIS = 1500;
Grazie Tim. Ma non riuscivo a trovare questo tipo di definizioni nel codice sorgente di Google Android. Dopo aver cercato al livello di driver ho trovato qualcosa come questo http://androidxref.com/5.0.0_r2/xref/external/bluetooth/bluedroid/stack/btm/btm_ble_int .h #define BTM_BLE_GAP_DISC_SCAN_INT 18/* Intervallo (scan_int) = 11,25 ms = 0x0010 * 0,625 ms */ #define BTM_BLE_GAP_DISC_SCAN_WIN 18/* scan_window = 11,25 ms = 0x0010 * 0,625 ms */ – HRG
corrisponde alla finestra di scansione e intervallo di scansione. Ma mi chiedo come definiscono i valori per SCAN_MODE_BALANCED, SCAN_MODE_LOW_LATENCY, SCAN_MODE_LOW_POWER! – HRG
- 1. Scansione del codice QR utilizzando l'API di Android Mobile Vision
- 2. Scansione scheda SD Android per nuovi file
- 3. Soluzione per SCAN_FAILED_APPLICATION_REGISTRATION_FAILED di scansione BLE?
- 4. Scansione di impronte digitali Android utilizzando il dispositivo Samsung
- 5. Scansione di Google Scholar
- 6. Impostazione scansione di copertura?
- 7. scansione java classpath nel plug-in maven
- 8. Scansione codice QR senza fotocamera a schermo intero
- 9. Codice sorgente SDK Android
- 10. Android: crea una nuova autorizzazione di sistema tramite il codice sorgente AOSP.
- 11. scansione di ingresso più veloce
- 12. Scansione "mappatura"
- 13. Scansione del Google Play Store
- 14. Codice di scansione automatica per impedire la stampa di statuti
- 15. Codice sorgente Android download
- 16. basato su Java di configurazione e scansione
- 17. Configurazione dispositivo Android per AOSP
- 18. android: scansione del codice a barre zxing riuscita ma non di ritorno dall'attività
- 19. Creazione di un modulo particolare nel codice sorgente Android
- 20. API di scansione virus .NET
- 21. Android Marshmallow 6.0.1 Scansione Bluetooth non restituisce risultati
- 22. Android AOSP - aggiunta di app/pacchetti/app
- 23. libreria di scansione di codici a barre Android + ZXing - dimensioni e orientamento personalizzati
- 24. Android NFC si blocca/interrompe la scansione dopo ripetitivo Scansioni
- 25. Android Beacon Library supporta realmente la scansione in background?
- 26. ruby regex scansione contro = ~
- 27. Come interrompere la scansione continua da zxing-android-embedded in Android
- 28. Componenti di scansione TWAIN per Delphi
- 29. Scansione codice a barre in una casella di testo specifica
- 30. Codice sorgente dell'app Android di Google Chrome?
Grazie @yanoken !! – HRG
Che cosa significa esattamente se dico che ho impostato i miei ScanSettings su SCAN_MODE_LOW_LATENCY? Si dice che scansiona ogni 5 secondi per 5 secondi e poi ricomincia a scansionare? Non penso che sia così perché ho un'applicazione in cui gli aggiornamenti sono più veloci di ogni 5 secondi. Potresti per favore approfondire l'interpretazione di questi valori? – BigPenguin