diff options
| author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-18 17:39:46 -0700 | 
|---|---|---|
| committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-18 17:39:46 -0700 | 
| commit | 105925376f8d0f6b318c9938c7b83ef7fef094da (patch) | |
| tree | 3b19ee2bd8704cb9c6a0da7e42dec6759183de6d /core/java/android/bluetooth | |
| parent | ba87e3e6c985e7175152993b5efcc7dd2f0e1c93 (diff) | |
| download | frameworks_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.java | 50 | ||||
| -rw-r--r-- | core/java/android/bluetooth/BluetoothIntent.java | 14 | ||||
| -rw-r--r-- | core/java/android/bluetooth/IBluetoothDevice.aidl | 5 | ||||
| -rw-r--r-- | core/java/android/bluetooth/IBluetoothDeviceCallback.aidl | 2 | ||||
| -rw-r--r-- | core/java/android/bluetooth/ScoSocket.java | 20 | 
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();          }      } | 
