Android AOSP - android源代码中扫描间隔和扫描window的定义
Android AOSP - Definition of scan interval and scan window in android source code
我已经下载了 Lollipop 5.0 的 AOSP 源代码。在 api 级别 21 中,在蓝牙低功耗扫描设置下,有三个用于扫描蓝牙设备的选项 - SCAN_MODE_BALANCED, SCAN_MODE_LOW_LATENCY, SCAN_MODE_LOW_POWER
。是否基于不同的扫描间隔和扫描 window 值?如果是这样,我在哪里可以找到源代码目录中为这些宏定义的值。
我不确定这是否准确,或者您是否可以使用它来找到您需要的值,但我发现了一些 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;
我在搜索关键字 "SCAN_MODE_BALANCED" 时在 http://androidxref.com/5.0.0_r2/xref/packages/apps/Bluetooth/src/com/android/bluetooth/gatt/ScanManager.java 中发现以下值:
/**
* 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;
也可以查看 ScanManager.ScanNative.configureRegularScanParams()。根据扫描设置(ScanSettings.SCAN_MODE_LOW_POWER
、ScanSettings.SCAN_MODE_BALANCED
、ScanSettings.SCAN_MODE_LOW_LATENCY
)设置两个参数scanWindow
和scanInterval
,转换成BLE单元,然后传递给gattSetScanParametersNative ().
希望对您有所帮助。
我已经下载了 Lollipop 5.0 的 AOSP 源代码。在 api 级别 21 中,在蓝牙低功耗扫描设置下,有三个用于扫描蓝牙设备的选项 - SCAN_MODE_BALANCED, SCAN_MODE_LOW_LATENCY, SCAN_MODE_LOW_POWER
。是否基于不同的扫描间隔和扫描 window 值?如果是这样,我在哪里可以找到源代码目录中为这些宏定义的值。
我不确定这是否准确,或者您是否可以使用它来找到您需要的值,但我发现了一些 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;
我在搜索关键字 "SCAN_MODE_BALANCED" 时在 http://androidxref.com/5.0.0_r2/xref/packages/apps/Bluetooth/src/com/android/bluetooth/gatt/ScanManager.java 中发现以下值:
/**
* 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;
也可以查看 ScanManager.ScanNative.configureRegularScanParams()。根据扫描设置(ScanSettings.SCAN_MODE_LOW_POWER
、ScanSettings.SCAN_MODE_BALANCED
、ScanSettings.SCAN_MODE_LOW_LATENCY
)设置两个参数scanWindow
和scanInterval
,转换成BLE单元,然后传递给gattSetScanParametersNative ().
希望对您有所帮助。