diff options
-rw-r--r-- | api/current.xml | 257 | ||||
-rw-r--r-- | core/java/android/bluetooth/BluetoothAdapter.java | 270 | ||||
-rw-r--r-- | core/java/android/bluetooth/BluetoothDevice.java | 3 | ||||
-rw-r--r-- | core/java/android/bluetooth/BluetoothError.java | 2 | ||||
-rw-r--r-- | core/java/android/bluetooth/BluetoothIntent.java | 28 | ||||
-rw-r--r-- | core/java/android/server/BluetoothA2dpService.java | 10 | ||||
-rw-r--r-- | core/java/android/server/BluetoothEventLoop.java | 6 | ||||
-rw-r--r-- | core/java/android/server/BluetoothService.java | 61 | ||||
-rw-r--r-- | core/java/com/android/internal/app/ShutdownThread.java | 4 | ||||
-rw-r--r-- | services/java/com/android/server/status/StatusBarPolicy.java | 10 |
10 files changed, 510 insertions, 141 deletions
diff --git a/api/current.xml b/api/current.xml index c8384e4..e640389 100644 --- a/api/current.xml +++ b/api/current.xml @@ -25457,6 +25457,50 @@ deprecated="not deprecated" visibility="public" > +<method name="disable" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="enable" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getAddress" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getName" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="getRemoteDevice" return="android.bluetooth.BluetoothDevice" abstract="false" @@ -25470,6 +25514,39 @@ <parameter name="address" type="java.lang.String"> </parameter> </method> +<method name="getScanMode" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="getState" + return="int" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> +<method name="isEnabled" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="listenUsingRfcommOn" return="android.bluetooth.BluetoothServerSocket" abstract="false" @@ -25485,6 +25562,175 @@ <exception name="IOException" type="java.io.IOException"> </exception> </method> +<method name="setName" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="name" type="java.lang.String"> +</parameter> +</method> +<method name="setScanMode" + return="boolean" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="mode" type="int"> +</parameter> +</method> +<field name="ACTION_SCAN_MODE_CHANGED" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.bluetooth.intent.action.SCAN_MODE_CHANGED"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="ACTION_STATE_CHANGED" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.bluetooth.intent.action.STATE_CHANGED"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="EXTRA_PREVIOUS_SCAN_MODE" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.bluetooth.intent.extra.PREVIOUS_SCAN_MODE"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="EXTRA_PREVIOUS_STATE" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.bluetooth.intent.extra.PREVIOUS_STATE"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="EXTRA_SCAN_MODE" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.bluetooth.intent.extra.SCAN_MODE"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="EXTRA_STATE" + type="java.lang.String" + transient="false" + volatile="false" + value=""android.bluetooth.intent.extra.STATE"" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCAN_MODE_CONNECTABLE" + type="int" + transient="false" + volatile="false" + value="51" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCAN_MODE_CONNECTABLE_DISCOVERABLE" + type="int" + transient="false" + volatile="false" + value="53" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="SCAN_MODE_NONE" + type="int" + transient="false" + volatile="false" + value="50" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="STATE_OFF" + type="int" + transient="false" + volatile="false" + value="40" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="STATE_ON" + type="int" + transient="false" + volatile="false" + value="42" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="STATE_TURNING_OFF" + type="int" + transient="false" + volatile="false" + value="43" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="STATE_TURNING_ON" + type="int" + transient="false" + volatile="false" + value="41" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> </class> <class name="BluetoothDevice" extends="java.lang.Object" @@ -25533,6 +25779,17 @@ visibility="public" > </method> +<method name="getName" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</method> <method name="writeToParcel" return="void" abstract="false" diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java index 5a182f0..1770bc7 100644 --- a/core/java/android/bluetooth/BluetoothAdapter.java +++ b/core/java/android/bluetooth/BluetoothAdapter.java @@ -16,6 +16,8 @@ package android.bluetooth; +import android.annotation.SdkConstant; +import android.annotation.SdkConstant.SdkConstantType; import android.os.RemoteException; import android.util.Log; @@ -40,32 +42,109 @@ import java.util.HashSet; public final class BluetoothAdapter { private static final String TAG = "BluetoothAdapter"; - /** @hide */ - public static final int BLUETOOTH_STATE_OFF = 0; - /** @hide */ - public static final int BLUETOOTH_STATE_TURNING_ON = 1; - /** @hide */ - public static final int BLUETOOTH_STATE_ON = 2; - /** @hide */ - public static final int BLUETOOTH_STATE_TURNING_OFF = 3; - - /** Inquiry scan and page scan are both off. - * Device is neither discoverable nor connectable - * @hide */ - public static final int SCAN_MODE_NONE = 0; - /** Page scan is on, inquiry scan is off. - * Device is connectable, but not discoverable - * @hide*/ - public static final int SCAN_MODE_CONNECTABLE = 1; - /** Page scan and inquiry scan are on. - * Device is connectable and discoverable - * @hide*/ - public static final int SCAN_MODE_CONNECTABLE_DISCOVERABLE = 3; + /** + * Broadcast Action: The state of the local Bluetooth adapter has been + * changed. + * <p>For example, Bluetooth has been turned on or off. + * <p>Contains the extra fields {@link #EXTRA_STATE} and {@link + * #EXTRA_PREVIOUS_STATE} containing the new and old states + * respectively. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH} to receive. + */ + @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + public static final String ACTION_STATE_CHANGED = + "android.bluetooth.intent.action.STATE_CHANGED"; - /** @hide */ - public static final int RESULT_FAILURE = -1; - /** @hide */ - public static final int RESULT_SUCCESS = 0; + /** + * Used as an int extra field in {@link #ACTION_STATE_CHANGED} + * intents to request the current power state. Possible values are: + * {@link #STATE_OFF}, + * {@link #STATE_TURNING_ON}, + * {@link #STATE_ON}, + * {@link #STATE_TURNING_OFF}, + */ + public static final String EXTRA_STATE = + "android.bluetooth.intent.extra.STATE"; + /** + * Used as an int extra field in {@link #ACTION_STATE_CHANGED} + * intents to request the previous power state. Possible values are: + * {@link #STATE_OFF}, + * {@link #STATE_TURNING_ON}, + * {@link #STATE_ON}, + * {@link #STATE_TURNING_OFF}, + */ + public static final String EXTRA_PREVIOUS_STATE = + "android.bluetooth.intent.extra.PREVIOUS_STATE"; + + /** + * Indicates the local Bluetooth adapter is off. + */ + public static final int STATE_OFF = 40; + /** + * Indicates the local Bluetooth adapter is turning on. However local + * clients should wait for {@link #STATE_ON} before attempting to + * use the adapter. + */ + public static final int STATE_TURNING_ON = 41; + /** + * Indicates the local Bluetooth adapter is on, and ready for use. + */ + public static final int STATE_ON = 42; + /** + * Indicates the local Bluetooth adapter is turning off. Local clients + * should immediately attempt graceful disconnection of any remote links. + */ + public static final int STATE_TURNING_OFF = 43; + + /** + * Broadcast Action: Indicates the Bluetooth scan mode of the local Adapter + * has changed. + * <p>Contains the extra fields {@link #EXTRA_SCAN_MODE} and {@link + * #EXTRA_PREVIOUS_SCAN_MODE} containing the new and old scan modes + * respectively. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH} + */ + @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + public static final String ACTION_SCAN_MODE_CHANGED = + "android.bluetooth.intent.action.SCAN_MODE_CHANGED"; + + /** + * Used as an int extra field in {@link #ACTION_SCAN_MODE_CHANGED} + * intents to request the current scan mode. Possible values are: + * {@link #SCAN_MODE_NONE}, + * {@link #SCAN_MODE_CONNECTABLE}, + * {@link #SCAN_MODE_CONNECTABLE_DISCOVERABLE}, + */ + public static final String EXTRA_SCAN_MODE = "android.bluetooth.intent.extra.SCAN_MODE"; + /** + * Used as an int extra field in {@link #ACTION_SCAN_MODE_CHANGED} + * intents to request the previous scan mode. Possible values are: + * {@link #SCAN_MODE_NONE}, + * {@link #SCAN_MODE_CONNECTABLE}, + * {@link #SCAN_MODE_CONNECTABLE_DISCOVERABLE}, + */ + public static final String EXTRA_PREVIOUS_SCAN_MODE = + "android.bluetooth.intent.extra.PREVIOUS_SCAN_MODE"; + + /** + * Indicates that both inquiry scan and page scan are disabled on the local + * Bluetooth adapter. Therefore this device is neither discoverable + * nor connectable from remote Bluetooth devices. + */ + public static final int SCAN_MODE_NONE = 50; + /** + * Indicates that inquiry scan is disabled, but page scan is enabled on the + * local Bluetooth adapter. Therefore this device is not discoverable from + * remote Bluetooth devices, but is connectable from remote devices that + * have previously discovered this device. + */ + public static final int SCAN_MODE_CONNECTABLE = 51; + /** + * Indicates that both inquiry scan and page scan are enabled on the local + * Bluetooth adapter. Therefore this device is both discoverable and + * connectable from remote Bluetooth devices. + */ + public static final int SCAN_MODE_CONNECTABLE_DISCOVERABLE = 53; /** The user will be prompted to enter a pin * @hide */ @@ -97,6 +176,7 @@ public final class BluetoothAdapter { * such as "00:11:22:33:AA:BB". * <p>A {@link BluetoothDevice} will always be returned for a valid * hardware address, even if this adapter has never seen that device. + * * @param address valid Bluetooth MAC address * @throws IllegalArgumentException if address is invalid */ @@ -105,10 +185,12 @@ public final class BluetoothAdapter { } /** - * Is Bluetooth currently turned on. + * Return true if Bluetooth is currently enabled and ready for use. + * <p>Equivalent to: + * <code>getBluetoothState() == STATE_ON</code> + * <p>Requires {@link android.Manifest.permission#BLUETOOTH} * - * @return true if Bluetooth enabled, false otherwise. - * @hide + * @return true if the local adapter is turned on */ public boolean isEnabled() { try { @@ -118,28 +200,40 @@ public final class BluetoothAdapter { } /** - * Get the current state of Bluetooth. + * Get the current state of the local Bluetooth adapter. + * <p>Possible return values are + * {@link #STATE_OFF}, + * {@link #STATE_TURNING_ON}, + * {@link #STATE_ON}, + * {@link #STATE_TURNING_OFF}. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH} * - * @return One of BLUETOOTH_STATE_ or BluetoothError.ERROR. - * @hide + * @return current state of Bluetooth adapter */ - public int getBluetoothState() { + public int getState() { try { return mService.getBluetoothState(); } catch (RemoteException e) {Log.e(TAG, "", e);} - return BluetoothError.ERROR; + return STATE_OFF; } /** - * Enable the Bluetooth device. - * Turn on the underlying hardware. - * 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. - * @hide + * Turn on the local Bluetooth adapter. + * <p>This powers on the underlying Bluetooth hardware, and starts all + * Bluetooth system services. + * <p>This is an asynchronous call: it will return immediatley, and + * clients should listen for {@link #ACTION_STATE_CHANGED} + * to be notified of subsequent adapter state changes. If this call returns + * true, then the adapter state will immediately transition from {@link + * #STATE_OFF} to {@link #STATE_TURNING_ON}, and some time + * later transition to either {@link #STATE_OFF} or {@link + * #STATE_ON}. If this call returns false then there was an + * immediate problem that will prevent the adapter from being turned on - + * such as Airplane mode, or the adapter is already turned on. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN} + * + * @return true to indicate adapter startup has begun, or false on + * immediate error */ public boolean enable() { try { @@ -149,11 +243,22 @@ public final class BluetoothAdapter { } /** - * Disable the Bluetooth device. - * This turns off the underlying hardware. + * Turn off the local Bluetooth adapter. + * <p>This gracefully shuts down all Bluetooth connections, stops Bluetooth + * system services, and powers down the underlying Bluetooth hardware. + * <p>This is an asynchronous call: it will return immediatley, and + * clients should listen for {@link #ACTION_STATE_CHANGED} + * to be notified of subsequent adapter state changes. If this call returns + * true, then the adapter state will immediately transition from {@link + * #STATE_ON} to {@link #STATE_TURNING_OFF}, and some time + * later transition to either {@link #STATE_OFF} or {@link + * #STATE_ON}. If this call returns false then there was an + * immediate problem that will prevent the adapter from being turned off - + * such as the adapter already being turned off. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN} * - * @return true if successful, false otherwise. - * @hide + * @return true to indicate adapter shutdown has begun, or false on + * immediate error */ public boolean disable() { try { @@ -162,7 +267,13 @@ public final class BluetoothAdapter { return false; } - /** @hide */ + /** + * Returns the hardware address of the local Bluetooth adapter. + * <p>For example, "00:11:22:AA:BB:CC". + * <p>Requires {@link android.Manifest.permission#BLUETOOTH} + * + * @return Bluetooth hardware address as string + */ public String getAddress() { try { return mService.getAddress(); @@ -171,13 +282,11 @@ public final class BluetoothAdapter { } /** - * Get the friendly Bluetooth name of this device. - * - * This name is visible to remote Bluetooth devices. Currently it is only - * possible to retrieve the Bluetooth name when Bluetooth is enabled. + * Get the friendly Bluetooth name of the local Bluetooth adapter. + * <p>This name is visible to remote Bluetooth devices. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH} * - * @return the Bluetooth name, or null if there was a problem. - * @hide + * @return the Bluetooth name, or null on error */ public String getName() { try { @@ -187,14 +296,15 @@ public final class BluetoothAdapter { } /** - * Set the friendly Bluetooth name of this device. - * - * This name is visible to remote Bluetooth devices. The Bluetooth Service - * is responsible for persisting this name. + * Set the friendly Bluetooth name of the local Bluetoth adapter. + * <p>This name is visible to remote Bluetooth devices. + * <p>Valid Bluetooth names are a maximum of 248 UTF-8 characters, however + * many remote devices can only display the first 40 characters, and some + * may be limited to just 20. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN} * - * @param name the name to set - * @return true, if the name was successfully set. False otherwise. - * @hide + * @param name a valid Bluetooth name + * @return true if the name was set, false otherwise */ public boolean setName(String name) { try { @@ -204,28 +314,46 @@ public final class BluetoothAdapter { } /** - * Get the current scan mode. - * Used to determine if the local device is connectable and/or discoverable - * @return Scan mode, one of SCAN_MODE_* or an error code - * @hide + * Get the current Bluetooth scan mode of the local Bluetooth adaper. + * <p>The Bluetooth scan mode determines if the local adapter is + * connectable and/or discoverable from remote Bluetooth devices. + * <p>Possible values are: + * {@link #SCAN_MODE_NONE}, + * {@link #SCAN_MODE_CONNECTABLE}, + * {@link #SCAN_MODE_CONNECTABLE_DISCOVERABLE}. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH} + * + * @return scan mode */ public int getScanMode() { try { return mService.getScanMode(); } catch (RemoteException e) {Log.e(TAG, "", e);} - return BluetoothError.ERROR_IPC; + return SCAN_MODE_NONE; } /** - * Set the current scan mode. - * Used to make the local device connectable and/or discoverable - * @param scanMode One of SCAN_MODE_* - * @hide + * Set the Bluetooth scan mode of the local Bluetooth adapter. + * <p>The Bluetooth scan mode determines if the local adapter is + * connectable and/or discoverable from remote Bluetooth devices. + * <p>For privacy reasons, it is recommended to limit the duration of time + * that the local adapter remains in a discoverable scan mode. For example, + * 2 minutes is a generous time to allow a remote Bluetooth device to + * initiate and complete its discovery process. + * <p>Valid scan mode values are: + * {@link #SCAN_MODE_NONE}, + * {@link #SCAN_MODE_CONNECTABLE}, + * {@link #SCAN_MODE_CONNECTABLE_DISCOVERABLE}. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN} + * + * @param mode valid scan mode + * @return true if the scan mode was set, false otherwise */ - public void setScanMode(int scanMode) { + public boolean setScanMode(int mode) { try { - mService.setScanMode(scanMode); + return mService.setScanMode(mode); } catch (RemoteException e) {Log.e(TAG, "", e);} + return false; } /** @hide */ diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 1b7011c..7086557 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -193,9 +193,9 @@ public final class BluetoothDevice implements Parcelable { * <p>The local adapter will automatically retrieve remote names when * performing a device scan, and will cache them. This method just returns * the name for this device from the cache. + * <p>Requires {@link android.Manifest.permission#BLUETOOTH} * * @return the Bluetooth name, or null if there was a problem. - * @hide */ public String getName() { try { @@ -358,6 +358,7 @@ public final class BluetoothDevice implements Parcelable { * connection. * <p>Valid RFCOMM channels are in range 1 to 30. * <p>Requires {@link android.Manifest.permission#BLUETOOTH} + * * @param channel RFCOMM channel to connect to * @return a RFCOMM BluetoothServerSocket ready for an outgoing connection * @throws IOException on error, for example Bluetooth not available, or diff --git a/core/java/android/bluetooth/BluetoothError.java b/core/java/android/bluetooth/BluetoothError.java index 2554bea..81c1ce9 100644 --- a/core/java/android/bluetooth/BluetoothError.java +++ b/core/java/android/bluetooth/BluetoothError.java @@ -21,6 +21,8 @@ package android.bluetooth; * * Errors are always negative. * + * TODO: Deprecate this class. + * * @hide */ public class BluetoothError { diff --git a/core/java/android/bluetooth/BluetoothIntent.java b/core/java/android/bluetooth/BluetoothIntent.java index c39bc3d..8de19f5 100644 --- a/core/java/android/bluetooth/BluetoothIntent.java +++ b/core/java/android/bluetooth/BluetoothIntent.java @@ -20,17 +20,12 @@ import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; /** - * The Android Bluetooth API is not finalized, and *will* change. Use at your - * own risk. - * - * Manages the local Bluetooth device. Scan for devices, create bondings, - * power up and down the adapter. + * Bluetooth API constants. * + * TODO: Deprecate this class * @hide */ public interface BluetoothIntent { - public static final String SCAN_MODE = - "android.bluetooth.intent.SCAN_MODE"; public static final String DEVICE = "android.bluetooth.intent.DEVICE"; public static final String NAME = @@ -41,10 +36,6 @@ 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 = @@ -91,25 +82,10 @@ public interface BluetoothIntent { public static final String DEVICE_PICKER_DEVICE_PICKER = "android.bluetooth.intent.action.DEVICE_PICKER"; - /** 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 BLUETOOTH_STATE_CHANGED_ACTION = - "android.bluetooth.intent.action.BLUETOOTH_STATE_CHANGED"; - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String NAME_CHANGED_ACTION = "android.bluetooth.intent.action.NAME_CHANGED"; - /** - * Broadcast when the scan mode changes. Always contains an int extra - * named SCAN_MODE that contains the new scan mode. - */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) - public static final String SCAN_MODE_CHANGED_ACTION = - "android.bluetooth.intent.action.SCAN_MODE_CHANGED"; - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String DISCOVERY_STARTED_ACTION = "android.bluetooth.intent.action.DISCOVERY_STARTED"; diff --git a/core/java/android/server/BluetoothA2dpService.java b/core/java/android/server/BluetoothA2dpService.java index d9fcb53..4fa81bb 100644 --- a/core/java/android/server/BluetoothA2dpService.java +++ b/core/java/android/server/BluetoothA2dpService.java @@ -81,14 +81,14 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { String action = intent.getAction(); BluetoothDevice device = intent.getParcelableExtra(BluetoothIntent.DEVICE); - if (action.equals(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION)) { - int state = intent.getIntExtra(BluetoothIntent.BLUETOOTH_STATE, + if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { + int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothError.ERROR); switch (state) { - case BluetoothAdapter.BLUETOOTH_STATE_ON: + case BluetoothAdapter.STATE_ON: onBluetoothEnable(); break; - case BluetoothAdapter.BLUETOOTH_STATE_TURNING_OFF: + case BluetoothAdapter.STATE_TURNING_OFF: onBluetoothDisable(); break; } @@ -134,7 +134,7 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { mAdapter = (BluetoothAdapter) context.getSystemService(Context.BLUETOOTH_SERVICE); - mIntentFilter = new IntentFilter(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION); + mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED); mIntentFilter.addAction(BluetoothIntent.BOND_STATE_CHANGED_ACTION); mIntentFilter.addAction(BluetoothIntent.REMOTE_DEVICE_CONNECTED_ACTION); mContext.registerReceiver(mReceiver, mIntentFilter); diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java index e341b74..9f36f7e 100644 --- a/core/java/android/server/BluetoothEventLoop.java +++ b/core/java/android/server/BluetoothEventLoop.java @@ -265,8 +265,8 @@ class BluetoothEventLoop { pairable.equals("true"), discoverable.equals("true")); if (mode >= 0) { - Intent intent = new Intent(BluetoothIntent.SCAN_MODE_CHANGED_ACTION); - intent.putExtra(BluetoothIntent.SCAN_MODE, mode); + Intent intent = new Intent(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED); + intent.putExtra(BluetoothAdapter.EXTRA_SCAN_MODE, mode); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); mContext.sendBroadcast(intent, BLUETOOTH_PERM); } @@ -371,7 +371,7 @@ class BluetoothEventLoop { address = address.toUpperCase(); mPasskeyAgentRequestData.put(address, new Integer(nativeData)); - if (mBluetoothService.getBluetoothState() == BluetoothAdapter.BLUETOOTH_STATE_TURNING_OFF) { + if (mBluetoothService.getBluetoothState() == BluetoothAdapter.STATE_TURNING_OFF) { // shutdown path mBluetoothService.cancelPairingUserInput(address); return null; diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java index 5fe0d4e..6940075 100644 --- a/core/java/android/server/BluetoothService.java +++ b/core/java/android/server/BluetoothService.java @@ -102,7 +102,7 @@ public class BluetoothService extends IBluetooth.Stub { disableNative(); } - mBluetoothState = BluetoothAdapter.BLUETOOTH_STATE_OFF; + mBluetoothState = BluetoothAdapter.STATE_OFF; mIsDiscovering = false; mAdapterProperties = new HashMap<String, String>(); mDeviceProperties = new HashMap<String, Map<String,String>>(); @@ -128,7 +128,7 @@ public class BluetoothService extends IBluetooth.Stub { public boolean isEnabled() { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission"); - return mBluetoothState == BluetoothAdapter.BLUETOOTH_STATE_ON; + return mBluetoothState == BluetoothAdapter.STATE_ON; } public int getBluetoothState() { @@ -153,9 +153,9 @@ public class BluetoothService extends IBluetooth.Stub { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission"); switch (mBluetoothState) { - case BluetoothAdapter.BLUETOOTH_STATE_OFF: + case BluetoothAdapter.STATE_OFF: return true; - case BluetoothAdapter.BLUETOOTH_STATE_ON: + case BluetoothAdapter.STATE_ON: break; default: return false; @@ -163,7 +163,7 @@ public class BluetoothService extends IBluetooth.Stub { if (mEnableThread != null && mEnableThread.isAlive()) { return false; } - setBluetoothState(BluetoothAdapter.BLUETOOTH_STATE_TURNING_OFF); + setBluetoothState(BluetoothAdapter.STATE_TURNING_OFF); // Allow 3 seconds for profiles to gracefully disconnect // TODO: Introduce a callback mechanism so that each profile can notify @@ -175,7 +175,7 @@ public class BluetoothService extends IBluetooth.Stub { private synchronized void finishDisable(boolean saveSetting) { - if (mBluetoothState != BluetoothAdapter.BLUETOOTH_STATE_TURNING_OFF) { + if (mBluetoothState != BluetoothAdapter.STATE_TURNING_OFF) { return; } mEventLoop.stop(); @@ -189,8 +189,8 @@ public class BluetoothService extends IBluetooth.Stub { } // update mode - Intent intent = new Intent(BluetoothIntent.SCAN_MODE_CHANGED_ACTION); - intent.putExtra(BluetoothIntent.SCAN_MODE, BluetoothAdapter.SCAN_MODE_NONE); + Intent intent = new Intent(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED); + intent.putExtra(BluetoothAdapter.EXTRA_SCAN_MODE, BluetoothAdapter.SCAN_MODE_NONE); mContext.sendBroadcast(intent, BLUETOOTH_PERM); mIsDiscovering = false; @@ -200,7 +200,7 @@ public class BluetoothService extends IBluetooth.Stub { persistBluetoothOnSetting(false); } - setBluetoothState(BluetoothAdapter.BLUETOOTH_STATE_OFF); + setBluetoothState(BluetoothAdapter.STATE_OFF); // Log bluetooth off to battery stats. long ident = Binder.clearCallingIdentity(); @@ -237,13 +237,13 @@ public class BluetoothService extends IBluetooth.Stub { if (mIsAirplaneSensitive && isAirplaneModeOn()) { return false; } - if (mBluetoothState != BluetoothAdapter.BLUETOOTH_STATE_OFF) { + if (mBluetoothState != BluetoothAdapter.STATE_OFF) { return false; } if (mEnableThread != null && mEnableThread.isAlive()) { return false; } - setBluetoothState(BluetoothAdapter.BLUETOOTH_STATE_TURNING_ON); + setBluetoothState(BluetoothAdapter.STATE_TURNING_ON); mEnableThread = new EnableThread(saveSetting); mEnableThread.start(); return true; @@ -251,7 +251,7 @@ public class BluetoothService extends IBluetooth.Stub { /** Forcibly restart Bluetooth if it is on */ /* package */ synchronized void restart() { - if (mBluetoothState != BluetoothAdapter.BLUETOOTH_STATE_ON) { + if (mBluetoothState != BluetoothAdapter.STATE_ON) { return; } mRestart = true; @@ -267,9 +267,9 @@ public class BluetoothService extends IBluetooth.Stub { if (DBG) log("Bluetooth state " + mBluetoothState + " -> " + state); - Intent intent = new Intent(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION); - intent.putExtra(BluetoothIntent.BLUETOOTH_PREVIOUS_STATE, mBluetoothState); - intent.putExtra(BluetoothIntent.BLUETOOTH_STATE, state); + Intent intent = new Intent(BluetoothAdapter.ACTION_STATE_CHANGED); + intent.putExtra(BluetoothAdapter.EXTRA_PREVIOUS_STATE, mBluetoothState); + intent.putExtra(BluetoothAdapter.EXTRA_STATE, state); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); mBluetoothState = state; @@ -357,8 +357,8 @@ public class BluetoothService extends IBluetooth.Stub { mEnableThread = null; setBluetoothState(res ? - BluetoothAdapter.BLUETOOTH_STATE_ON : - BluetoothAdapter.BLUETOOTH_STATE_OFF); + BluetoothAdapter.STATE_ON : + BluetoothAdapter.STATE_OFF); if (res) { // Update mode @@ -411,7 +411,7 @@ public class BluetoothService extends IBluetooth.Stub { )); public synchronized void loadBondState() { - if (mBluetoothState != BluetoothAdapter.BLUETOOTH_STATE_TURNING_ON) { + if (mBluetoothState != BluetoothAdapter.STATE_TURNING_ON) { return; } String []bonds = null; @@ -633,17 +633,22 @@ public class BluetoothService extends IBluetooth.Stub { public synchronized boolean setScanMode(int mode) { mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH_ADMIN permission"); - boolean pairable = false, discoverable = false; - String modeString = scanModeToBluezString(mode); - if (modeString.equals("off")) { + boolean pairable = false; + boolean discoverable = false; + switch (mode) { + case BluetoothAdapter.SCAN_MODE_NONE: pairable = false; discoverable = false; - } else if (modeString.equals("pariable")) { + break; + case BluetoothAdapter.SCAN_MODE_CONNECTABLE: pairable = true; discoverable = false; - } else if (modeString.equals("discoverable")) { + case BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE: pairable = true; discoverable = true; + default: + Log.w(TAG, "Requested invalid scan mode " + mode); + return false; } setPropertyBoolean("Pairable", pairable); setPropertyBoolean("Discoverable", discoverable); @@ -709,7 +714,7 @@ public class BluetoothService extends IBluetooth.Stub { public synchronized int getScanMode() { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission"); if (!isEnabled()) - return BluetoothError.ERROR; + return BluetoothAdapter.SCAN_MODE_NONE; boolean pairable = getProperty("Pairable").equals("true"); boolean discoverable = getProperty("Discoverable").equals("true"); @@ -1103,16 +1108,16 @@ public class BluetoothService extends IBluetooth.Stub { pw.println("\nmIsAirplaneSensitive = " + mIsAirplaneSensitive + "\n"); switch(mBluetoothState) { - case BluetoothAdapter.BLUETOOTH_STATE_OFF: + case BluetoothAdapter.STATE_OFF: pw.println("\nBluetooth OFF\n"); return; - case BluetoothAdapter.BLUETOOTH_STATE_TURNING_ON: + case BluetoothAdapter.STATE_TURNING_ON: pw.println("\nBluetooth TURNING ON\n"); return; - case BluetoothAdapter.BLUETOOTH_STATE_TURNING_OFF: + case BluetoothAdapter.STATE_TURNING_OFF: pw.println("\nBluetooth TURNING OFF\n"); return; - case BluetoothAdapter.BLUETOOTH_STATE_ON: + case BluetoothAdapter.STATE_ON: pw.println("\nBluetooth ON\n"); } diff --git a/core/java/com/android/internal/app/ShutdownThread.java b/core/java/com/android/internal/app/ShutdownThread.java index 4c9451e..9e1f325 100644 --- a/core/java/com/android/internal/app/ShutdownThread.java +++ b/core/java/com/android/internal/app/ShutdownThread.java @@ -185,7 +185,7 @@ public final class ShutdownThread extends Thread { try { bluetoothOff = bluetooth == null || - bluetooth.getBluetoothState() == BluetoothAdapter.BLUETOOTH_STATE_OFF; + bluetooth.getBluetoothState() == BluetoothAdapter.STATE_OFF; if (!bluetoothOff) { Log.w(TAG, "Disabling Bluetooth..."); bluetooth.disable(false); // disable but don't persist new state @@ -213,7 +213,7 @@ public final class ShutdownThread extends Thread { if (!bluetoothOff) { try { bluetoothOff = - bluetooth.getBluetoothState() == BluetoothAdapter.BLUETOOTH_STATE_OFF; + bluetooth.getBluetoothState() == BluetoothAdapter.STATE_OFF; } catch (RemoteException ex) { Log.e(TAG, "RemoteException during bluetooth shutdown", ex); bluetoothOff = true; diff --git a/services/java/com/android/server/status/StatusBarPolicy.java b/services/java/com/android/server/status/StatusBarPolicy.java index 10680dd..c663e54 100644 --- a/services/java/com/android/server/status/StatusBarPolicy.java +++ b/services/java/com/android/server/status/StatusBarPolicy.java @@ -362,7 +362,7 @@ public class StatusBarPolicy { || action.equals(Intent.ACTION_POWER_CONNECTED)) { onBatteryOkay(intent); } - else if (action.equals(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION) || + else if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED) || action.equals(BluetoothIntent.HEADSET_STATE_CHANGED_ACTION) || action.equals(BluetoothA2dp.SINK_STATE_CHANGED_ACTION) || action.equals(BluetoothPbap.PBAP_STATE_CHANGED_ACTION)) { @@ -507,7 +507,7 @@ public class StatusBarPolicy { filter.addAction(Intent.ACTION_SYNC_STATE_CHANGED); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); filter.addAction(AudioManager.VIBRATE_SETTING_CHANGED_ACTION); - filter.addAction(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION); + filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); filter.addAction(BluetoothIntent.HEADSET_STATE_CHANGED_ACTION); filter.addAction(BluetoothA2dp.SINK_STATE_CHANGED_ACTION); filter.addAction(BluetoothPbap.PBAP_STATE_CHANGED_ACTION); @@ -1072,10 +1072,10 @@ public class StatusBarPolicy { int iconId = com.android.internal.R.drawable.stat_sys_data_bluetooth; String action = intent.getAction(); - if (action.equals(BluetoothIntent.BLUETOOTH_STATE_CHANGED_ACTION)) { - int state = intent.getIntExtra(BluetoothIntent.BLUETOOTH_STATE, + if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { + int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothError.ERROR); - mBluetoothEnabled = state == BluetoothAdapter.BLUETOOTH_STATE_ON; + mBluetoothEnabled = state == BluetoothAdapter.STATE_ON; } else if (action.equals(BluetoothIntent.HEADSET_STATE_CHANGED_ACTION)) { mBluetoothHeadsetState = intent.getIntExtra(BluetoothIntent.HEADSET_STATE, BluetoothHeadset.STATE_ERROR); |