OSDN Git Service

DO NOT MERGE ANYWHERE: Listen TRANSPORT_BLUETOOTH network change in GnssLocationProvider
authorZheng Zhang <zhzh@google.com>
Tue, 22 Aug 2017 17:27:14 +0000 (10:27 -0700)
committerZheng Zhang <zhzh@google.com>
Mon, 28 Aug 2017 23:23:07 +0000 (23:23 +0000)
TRANSPORT_BLUETOOTH is a essential network type for wearable device.

For non-master branch, only listen to Bluetooth on wearable device.

Bug: 64881794

Test: Trigger Bluetooth on/off on watch, check if UpdateNetworkState()
got called.

Change-Id: I30e39943220597987320ea7843d7d36827fdd0c7
(cherry picked from commit d6886710b5c9ed9d1567c4ee59773071bae7070c)

services/core/java/com/android/server/location/GnssLocationProvider.java

index bd947fb..17c1000 100644 (file)
@@ -30,6 +30,7 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.hardware.location.GeofenceHardware;
 import android.hardware.location.GeofenceHardwareImpl;
@@ -2250,6 +2251,12 @@ public class GnssLocationProvider implements LocationProviderInterface {
             NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder();
             networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
             networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
+            // On watches, Bluetooth is the most important network type.
+            boolean isWatch =
+                mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH);
+            if (isWatch) {
+                networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH);
+            }
             NetworkRequest networkRequest = networkRequestBuilder.build();
             mConnMgr.registerNetworkCallback(networkRequest, mNetworkConnectivityCallback);