summaryrefslogtreecommitdiffstats
path: root/src/com/android/bluetooth/hfp/HeadsetService.java
diff options
context:
space:
mode:
authorGanesh Ganapathi Batta <ganeshg@broadcom.com>2012-07-31 16:22:32 -0700
committerMatthew Xie <mattx@google.com>2012-08-06 23:29:09 -0700
commit4f5430babbc5a8f870e5a578a4ea3452f41dd97a (patch)
tree2534082ebdb4124e5d8c151f97b0453cc5fad21b /src/com/android/bluetooth/hfp/HeadsetService.java
parent0322ae1f5e8ea55c391145e7925cb5962a97c11f (diff)
downloadandroid_packages_apps_Bluetooth-4f5430babbc5a8f870e5a578a4ea3452f41dd97a.tar.gz
android_packages_apps_Bluetooth-4f5430babbc5a8f870e5a578a4ea3452f41dd97a.tar.bz2
android_packages_apps_Bluetooth-4f5430babbc5a8f870e5a578a4ea3452f41dd97a.zip
Implement Profile Auto connection logic
Implement Profile Auto connection logic (moved from Settings App )in Bluetooth APK to avoid Auto connection not happening if the Settings App is not running As part of this implementation following features are implemented 1. Auto connection initiation during BT on OFF 2. Profile Auto connection priority management 3. Connecting Missing profile logic 4. Initialize Profile Priorities on Bond State Change Change-Id: I12b7c190e28f043b4b008c9b48ac7e13aaf178e6
Diffstat (limited to 'src/com/android/bluetooth/hfp/HeadsetService.java')
-rwxr-xr-xsrc/com/android/bluetooth/hfp/HeadsetService.java45
1 files changed, 41 insertions, 4 deletions
diff --git a/src/com/android/bluetooth/hfp/HeadsetService.java b/src/com/android/bluetooth/hfp/HeadsetService.java
index 49fc3f531..9f6f6da0c 100755
--- a/src/com/android/bluetooth/hfp/HeadsetService.java
+++ b/src/com/android/bluetooth/hfp/HeadsetService.java
@@ -34,6 +34,7 @@ public class HeadsetService extends ProfileService {
private static final boolean DBG = true;
private static final String TAG = "HeadsetService";
private HeadsetStateMachine mStateMachine;
+ private static HeadsetService sHeadsetService;
protected String getName() {
return TAG;
@@ -54,6 +55,7 @@ public class HeadsetService extends ProfileService {
} catch (Exception e) {
Log.w(TAG,"Unable to register headset receiver",e);
}
+ setHeadsetService(this);
return true;
}
@@ -72,6 +74,7 @@ public class HeadsetService extends ProfileService {
mStateMachine.cleanup();
mStateMachine=null;
}
+ clearHeadsetService();
return true;
}
@@ -252,7 +255,41 @@ public class HeadsetService extends ProfileService {
};
//API methods
- boolean connect(BluetoothDevice device) {
+ public static synchronized HeadsetService getHeadsetService(){
+ if (sHeadsetService != null && sHeadsetService.isAvailable()) {
+ if (DBG) Log.d(TAG, "getHeadsetService(): returning " + sHeadsetService);
+ return sHeadsetService;
+ }
+ if (DBG) {
+ if (sHeadsetService == null) {
+ Log.d(TAG, "getHeadsetService(): service is NULL");
+ } else if (!(sHeadsetService.isAvailable())) {
+ Log.d(TAG,"getHeadsetService(): service is not available");
+ }
+ }
+ return null;
+ }
+
+ private static synchronized void setHeadsetService(HeadsetService instance) {
+ if (instance != null && instance.isAvailable()) {
+ if (DBG) Log.d(TAG, "setHeadsetService(): set to: " + sHeadsetService);
+ sHeadsetService = instance;
+ } else {
+ if (DBG) {
+ if (sHeadsetService == null) {
+ Log.d(TAG, "setHeadsetService(): service not available");
+ } else if (!sHeadsetService.isAvailable()) {
+ Log.d(TAG,"setHeadsetService(): service is cleaning up");
+ }
+ }
+ }
+ }
+
+ private static synchronized void clearHeadsetService() {
+ sHeadsetService = null;
+ }
+
+ public boolean connect(BluetoothDevice device) {
enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
"Need BLUETOOTH ADMIN permission");
@@ -283,7 +320,7 @@ public class HeadsetService extends ProfileService {
return true;
}
- List<BluetoothDevice> getConnectedDevices() {
+ public List<BluetoothDevice> getConnectedDevices() {
enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
return mStateMachine.getConnectedDevices();
}
@@ -298,7 +335,7 @@ public class HeadsetService extends ProfileService {
return mStateMachine.getConnectionState(device);
}
- boolean setPriority(BluetoothDevice device, int priority) {
+ public boolean setPriority(BluetoothDevice device, int priority) {
enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
"Need BLUETOOTH_ADMIN permission");
Settings.Secure.putInt(getContentResolver(),
@@ -308,7 +345,7 @@ public class HeadsetService extends ProfileService {
return true;
}
- int getPriority(BluetoothDevice device) {
+ public int getPriority(BluetoothDevice device) {
enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
"Need BLUETOOTH_ADMIN permission");
int priority = Settings.Secure.getInt(getContentResolver(),