in packages/@fbcmobile-signalscan/android/src/main/java/com/fbc/signalscan/CellScanResultsModule.java [194:254]
private void scanAllNetworks(final TelephonyManager teleManager) {
Log.d(TAG, "performing network scan using scanAllNetworks()");
RadioAccessSpecifier[] radioAccesses = {
/* gsm */
new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.GERAN, null, null),
/* lte */
new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.EUTRAN, null, null),
/* wcdma */
new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.UTRAN, null, null)
};
class NetworkScanCallback extends TelephonyScanManager.NetworkScanCallback {
private Promise promise;
private List<CellInfo> cellList;
private NetworkScanCallback(Promise promise) {
super();
this.promise = promise;
}
@Override
public void onResults(List<CellInfo> results) {
Log.d(TAG, String.format("receive network scan results: %s", results.toString()));
this.cellList = results;
}
@Override
public void onError(int error) {
Log.d(
TAG,
String.format(
"requestNetworkScan failed with error %d, falling back to scanRegisteredNetwork()",
error));
scanRegisteredNetwork(teleManager);
}
@Override
public void onComplete() {
Log.d(TAG, "network scan complete");
WritableMap map = processCellScanResults(teleManager, this.cellList);
this.promise.resolve(map);
}
}
NetworkScanRequest mRequest =
new NetworkScanRequest(
NetworkScanRequest.SCAN_TYPE_ONE_SHOT,
radioAccesses,
6, // period to restart scan (in seconds) if no network found, not used for one shot but
// scan must be greater than 5 to pass request validation
61, // maximum duration of search (in seconds). Must be greater than 60
// to pass request validation
true, // whether to report incremental scan results, not used for one shot scan
3, // period to report incremental scan results (in seconds)
null // terminate scan once any network in the list is found
);
this.mNetworkScan =
teleManager.requestNetworkScan(
mRequest, AsyncTask.SERIAL_EXECUTOR, new NetworkScanCallback(this.mPromise));
}