Merge "b/2310373 Show pairing dialogs if the device has been scanning for bt devices recently."

This commit is contained in:
Michael Chan
2010-03-03 21:29:22 -08:00
committed by Android (Google) Code Review
6 changed files with 75 additions and 10 deletions

View File

@@ -16,6 +16,9 @@
package com.android.settings.bluetooth;
import com.android.settings.R;
import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothClass;
@@ -25,11 +28,9 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.util.Log;
import com.android.settings.R;
import com.android.settings.bluetooth.LocalBluetoothProfileManager.Profile;
/**
* BluetoothEventRedirector receives broadcasts and callbacks from the Bluetooth
* API and dispatches the event on the UI thread to the right class in the
@@ -53,9 +54,11 @@ public class BluetoothEventRedirector {
BluetoothAdapter.ERROR);
mManager.setBluetoothStateInt(state);
} else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_STARTED)) {
persistDiscoveringTimestamp();
mManager.onScanningStateChanged(true);
} else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {
persistDiscoveringTimestamp();
mManager.onScanningStateChanged(false);
} else if (action.equals(BluetoothDevice.ACTION_FOUND)) {
@@ -191,4 +194,11 @@ public class BluetoothEventRedirector {
}
return null;
}
private void persistDiscoveringTimestamp() {
SharedPreferences.Editor editor = mManager.getSharedPreferences().edit();
editor.putLong(LocalBluetoothManager.SHARED_PREFERENCES_KEY_DISCOVERING_TIMESTAMP,
System.currentTimeMillis());
editor.commit();
}
}

View File

@@ -72,6 +72,9 @@ public class LocalBluetoothManager {
// of raising notifications
private static long GRACE_PERIOD_TO_SHOW_DIALOGS_IN_FOREGROUND = 60 * 1000;
public static final String SHARED_PREFERENCES_KEY_DISCOVERING_TIMESTAMP =
"last_discovering_time";
private static final String SHARED_PREFERENCES_KEY_LAST_SELECTED_DEVICE =
"last_selected_device";
@@ -314,7 +317,7 @@ public class LocalBluetoothManager {
long currentTimeMillis = System.currentTimeMillis();
SharedPreferences sharedPreferences = getSharedPreferences();
// If the device was in discoverable mode recently
// If the device was in discoverABLE mode recently
long lastDiscoverableEndTime = sharedPreferences.getLong(
BluetoothDiscoverableEnabler.SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP, 0);
if ((lastDiscoverableEndTime + GRACE_PERIOD_TO_SHOW_DIALOGS_IN_FOREGROUND)
@@ -322,6 +325,14 @@ public class LocalBluetoothManager {
return true;
}
// If the device was discoverING recently
if (mAdapter != null && mAdapter.isDiscovering()) {
return true;
} else if ((sharedPreferences.getLong(SHARED_PREFERENCES_KEY_DISCOVERING_TIMESTAMP, 0) +
GRACE_PERIOD_TO_SHOW_DIALOGS_IN_FOREGROUND) > currentTimeMillis) {
return true;
}
// If the device was picked in the device picker recently
if (deviceAddress != null) {
String lastSelectedDevice = sharedPreferences.getString(