summaryrefslogtreecommitdiffstats
path: root/core/java/android/bluetooth
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-18 17:39:46 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-18 17:39:46 -0700
commit105925376f8d0f6b318c9938c7b83ef7fef094da (patch)
tree3b19ee2bd8704cb9c6a0da7e42dec6759183de6d /core/java/android/bluetooth
parentba87e3e6c985e7175152993b5efcc7dd2f0e1c93 (diff)
downloadframeworks_base-105925376f8d0f6b318c9938c7b83ef7fef094da.zip
frameworks_base-105925376f8d0f6b318c9938c7b83ef7fef094da.tar.gz
frameworks_base-105925376f8d0f6b318c9938c7b83ef7fef094da.tar.bz2
auto import from //branches/cupcake_rel/...@140373
Diffstat (limited to 'core/java/android/bluetooth')
-rw-r--r--core/java/android/bluetooth/BluetoothDevice.java50
-rw-r--r--core/java/android/bluetooth/BluetoothIntent.java14
-rw-r--r--core/java/android/bluetooth/IBluetoothDevice.aidl5
-rw-r--r--core/java/android/bluetooth/IBluetoothDeviceCallback.aidl2
-rw-r--r--core/java/android/bluetooth/ScoSocket.java20
5 files changed, 52 insertions, 39 deletions
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java
index 1ba1c1e..abf08cb 100644
--- a/core/java/android/bluetooth/BluetoothDevice.java
+++ b/core/java/android/bluetooth/BluetoothDevice.java
@@ -31,6 +31,12 @@ import java.io.UnsupportedEncodingException;
* @hide
*/
public class BluetoothDevice {
+
+ public static final int BLUETOOTH_STATE_OFF = 0;
+ public static final int BLUETOOTH_STATE_TURNING_ON = 1;
+ public static final int BLUETOOTH_STATE_ON = 2;
+ public static final int BLUETOOTH_STATE_TURNING_OFF = 3;
+
/** Inquiry scan and page scan are both off.
* Device is neither discoverable nor connectable */
public static final int SCAN_MODE_NONE = 0;
@@ -83,7 +89,7 @@ public class BluetoothDevice {
}
/**
- * Get the current status of Bluetooth hardware.
+ * Is Bluetooth currently turned on.
*
* @return true if Bluetooth enabled, false otherwise.
*/
@@ -95,37 +101,30 @@ public class BluetoothDevice {
}
/**
+ * Get the current state of Bluetooth.
+ *
+ * @return One of BLUETOOTH_STATE_ or BluetoothError.ERROR.
+ */
+ public int getBluetoothState() {
+ try {
+ return mService.getBluetoothState();
+ } catch (RemoteException e) {Log.e(TAG, "", e);}
+ return BluetoothError.ERROR;
+ }
+
+ /**
* Enable the Bluetooth device.
* Turn on the underlying hardware.
- * This is an asynchronous call, BluetoothIntent.ENABLED_ACTION will be
- * sent if and when the device is successfully enabled.
+ * This is an asynchronous call,
+ * BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION can be used to check if
+ * and when the device is sucessfully enabled.
* @return false if we cannot enable the Bluetooth device. True does not
* imply the device was enabled, it only implies that so far there were no
* problems.
*/
public boolean enable() {
- return enable(null);
- }
-
- /**
- * Enable the Bluetooth device.
- * Turns on the underlying hardware.
- * This is an asynchronous call. onEnableResult() of your callback will be
- * called when the call is complete, with either RESULT_SUCCESS or
- * RESULT_FAILURE.
- *
- * Your callback will be called from a binder thread, not the main thread.
- *
- * In addition to the callback, BluetoothIntent.ENABLED_ACTION will be
- * broadcast if the device is successfully enabled.
- *
- * @param callback Your callback, null is ok.
- * @return true if your callback was successfully registered, or false if
- * there was an error, implying your callback will never be called.
- */
- public boolean enable(IBluetoothDeviceCallback callback) {
try {
- return mService.enable(callback);
+ return mService.enable();
} catch (RemoteException e) {Log.e(TAG, "", e);}
return false;
}
@@ -138,7 +137,7 @@ public class BluetoothDevice {
*/
public boolean disable() {
try {
- return mService.disable();
+ return mService.disable(true);
} catch (RemoteException e) {Log.e(TAG, "", e);}
return false;
}
@@ -551,7 +550,6 @@ public class BluetoothDevice {
}
return pinBytes;
}
-
private static final int ADDRESS_LENGTH = 17;
/** Sanity check a bluetooth address, such as "00:43:A8:23:10:F0" */
diff --git a/core/java/android/bluetooth/BluetoothIntent.java b/core/java/android/bluetooth/BluetoothIntent.java
index 9273d0d..344601b 100644
--- a/core/java/android/bluetooth/BluetoothIntent.java
+++ b/core/java/android/bluetooth/BluetoothIntent.java
@@ -41,6 +41,10 @@ public interface BluetoothIntent {
"android.bluetooth.intent.RSSI";
public static final String CLASS =
"android.bluetooth.intent.CLASS";
+ public static final String BLUETOOTH_STATE =
+ "android.bluetooth.intent.BLUETOOTH_STATE";
+ public static final String BLUETOOTH_PREVIOUS_STATE =
+ "android.bluetooth.intent.BLUETOOTH_PREVIOUS_STATE";
public static final String HEADSET_STATE =
"android.bluetooth.intent.HEADSET_STATE";
public static final String HEADSET_PREVIOUS_STATE =
@@ -54,12 +58,12 @@ public interface BluetoothIntent {
public static final String REASON =
"android.bluetooth.intent.REASON";
+ /** Broadcast when the local Bluetooth device state changes, for example
+ * when Bluetooth is enabled. Will contain int extra's BLUETOOTH_STATE and
+ * BLUETOOTH_PREVIOUS_STATE. */
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
- public static final String ENABLED_ACTION =
- "android.bluetooth.intent.action.ENABLED";
- @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
- public static final String DISABLED_ACTION =
- "android.bluetooth.intent.action.DISABLED";
+ public static final String BLUETOOTH_STATE_CHANGED_ACTION =
+ "android.bluetooth.intent.action.BLUETOOTH_STATE_CHANGED";
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String NAME_CHANGED_ACTION =
diff --git a/core/java/android/bluetooth/IBluetoothDevice.aidl b/core/java/android/bluetooth/IBluetoothDevice.aidl
index 4351d2e..6cd792e 100644
--- a/core/java/android/bluetooth/IBluetoothDevice.aidl
+++ b/core/java/android/bluetooth/IBluetoothDevice.aidl
@@ -26,8 +26,9 @@ import android.bluetooth.IBluetoothDeviceCallback;
interface IBluetoothDevice
{
boolean isEnabled();
- boolean enable(in IBluetoothDeviceCallback callback); // async
- boolean disable();
+ int getBluetoothState();
+ boolean enable();
+ boolean disable(boolean persistSetting);
String getAddress();
String getName();
diff --git a/core/java/android/bluetooth/IBluetoothDeviceCallback.aidl b/core/java/android/bluetooth/IBluetoothDeviceCallback.aidl
index d25bd56..d057093 100644
--- a/core/java/android/bluetooth/IBluetoothDeviceCallback.aidl
+++ b/core/java/android/bluetooth/IBluetoothDeviceCallback.aidl
@@ -22,6 +22,4 @@ package android.bluetooth;
oneway interface IBluetoothDeviceCallback
{
void onGetRemoteServiceChannelResult(in String address, int channel);
-
- void onEnableResult(int result);
}
diff --git a/core/java/android/bluetooth/ScoSocket.java b/core/java/android/bluetooth/ScoSocket.java
index a43a08b..1bf786f 100644
--- a/core/java/android/bluetooth/ScoSocket.java
+++ b/core/java/android/bluetooth/ScoSocket.java
@@ -76,7 +76,7 @@ public class ScoSocket {
try {
if (VDBG) log(this + " SCO OBJECT DTOR");
destroyNative();
- releaseWakeLock();
+ releaseWakeLockNow();
} finally {
super.finalize();
}
@@ -98,7 +98,7 @@ public class ScoSocket {
return true;
} else {
mState = STATE_CLOSED;
- releaseWakeLock();
+ releaseWakeLockNow();
return false;
}
}
@@ -148,7 +148,7 @@ public class ScoSocket {
mState = STATE_CLOSED;
}
mHandler.obtainMessage(mConnectedCode, mState, -1, this).sendToTarget();
- releaseWakeLock();
+ releaseWakeLockNow();
}
private synchronized void onAccepted(int result) {
@@ -183,7 +183,19 @@ public class ScoSocket {
private void releaseWakeLock() {
if (mWakeLock.isHeld()) {
- if (VDBG) log("mWakeLock.release() " + this);
+ // Keep apps processor awake for a further 2 seconds.
+ // This is a hack to resolve issue http://b/1616263 - in which
+ // we are left in a 80 mA power state when remotely terminating a
+ // call while connected to BT headset "HTC BH S100 " with A2DP and
+ // HFP profiles.
+ if (VDBG) log("mWakeLock.release() in 2 sec" + this);
+ mWakeLock.acquire(2000);
+ }
+ }
+
+ private void releaseWakeLockNow() {
+ if (mWakeLock.isHeld()) {
+ if (VDBG) log("mWakeLock.release() now" + this);
mWakeLock.release();
}
}