diff options
Diffstat (limited to 'framework/java')
6 files changed, 7 insertions, 418 deletions
diff --git a/framework/java/android/bluetooth/BluetoothAdapter.java b/framework/java/android/bluetooth/BluetoothAdapter.java index 97e3fc510d..faf864550d 100644 --- a/framework/java/android/bluetooth/BluetoothAdapter.java +++ b/framework/java/android/bluetooth/BluetoothAdapter.java @@ -219,22 +219,6 @@ public final class BluetoothAdapter { "android.bluetooth.adapter.action.SCAN_MODE_CHANGED"; /** - * Broadcast Action: Indicate BLE Advertising is started. - * @hide - */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) - public static final String ACTION_BLUETOOTH_ADVERTISING_STARTED = - "android.bluetooth.adapter.action.ADVERTISING_STARTED"; - - /** - * Broadcast Action: Indicated BLE Advertising is stopped. - * @hide - */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) - public static final String ACTION_BLUETOOTH_ADVERTISING_STOPPED = - "android.bluetooth.adapter.action.ADVERTISING_STOPPED"; - - /** * 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}, @@ -403,8 +387,6 @@ public final class BluetoothAdapter { private IBluetooth mService; private final Map<LeScanCallback, GattCallbackWrapper> mLeScanClients; - private BluetoothAdvScanData mBluetoothAdvScanData = null; - private GattCallbackWrapper mAdvertisingGattCallback; private final Handler mHandler; // Handler to post the advertise callback to run on main thread. private final Object mLock = new Object(); @@ -481,29 +463,6 @@ public final class BluetoothAdapter { } /** - * Returns a {@link BluetoothAdvScanData} object representing advertising data. - * Data will be reset when bluetooth service is turned off. - * @hide - */ - public BluetoothAdvScanData getAdvScanData() { - try { - IBluetoothGatt iGatt = mManagerService.getBluetoothGatt(); - if (iGatt == null) { - // BLE is not supported - Log.e(TAG, "failed to start, iGatt null"); - return null; - } - if (mBluetoothAdvScanData == null) { - mBluetoothAdvScanData = new BluetoothAdvScanData(iGatt, BluetoothAdvScanData.AD); - } - return mBluetoothAdvScanData; - } catch (RemoteException e) { - Log.e(TAG, "failed to get advScanData, error: " + e); - return null; - } - } - - /** * Returns a {@link BluetoothLeAdvertiser} object for Bluetooth LE Advertising operations. */ public BluetoothLeAdvertiser getBluetoothLeAdvertiser() { @@ -520,106 +479,6 @@ public final class BluetoothAdapter { } /** - * Interface for BLE advertising callback. - * - * @hide - */ - public interface AdvertiseCallback { - /** - * Callback when advertise starts. - * @param status - {@link #ADVERTISE_CALLBACK_SUCCESS} for success, others for failure. - */ - void onAdvertiseStart(int status); - /** - * Callback when advertise stops. - * @param status - {@link #ADVERTISE_CALLBACK_SUCCESS} for success, others for failure. - */ - void onAdvertiseStop(int status); - } - - /** - * Start BLE advertising using current {@link BluetoothAdvScanData}. - * <p>Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED} - * - * @param callback - {@link AdvertiseCallback} - * @return true if BLE advertising succeeds, false otherwise. - * @hide - */ - public boolean startAdvertising(final AdvertiseCallback callback) { - if (getState() != STATE_ON) return false; - try { - IBluetoothGatt iGatt = mManagerService.getBluetoothGatt(); - if (iGatt == null) { - // BLE is not supported. - return false; - } - // Restart/reset advertising packets if advertising is in progress. - if (isAdvertising()) { - // Invalid advertising callback. - if (mAdvertisingGattCallback == null || mAdvertisingGattCallback.mLeHandle == -1) { - Log.e(TAG, "failed to restart advertising, invalid callback"); - return false; - } - iGatt.startAdvertising(mAdvertisingGattCallback.mLeHandle); - // Run the callback from main thread. - mHandler.post(new Runnable() { - @Override - public void run() { - // callback with status success. - callback.onAdvertiseStart(ADVERTISE_CALLBACK_SUCCESS); - } - }); - return true; - } - UUID uuid = UUID.randomUUID(); - GattCallbackWrapper wrapper = - new GattCallbackWrapper(this, null, null, callback); - iGatt.registerClient(new ParcelUuid(uuid), wrapper); - if (!wrapper.advertiseStarted()) { - return false; - } - synchronized (mLock) { - mAdvertisingGattCallback = wrapper; - } - return true; - } catch (RemoteException e) { - Log.e(TAG, "", e); - return false; - } - } - - /** - * Stop BLE advertising. The callback has to be the same one used for start advertising. - * - * @param callback - {@link AdvertiseCallback} - * @return true if BLE advertising stops, false otherwise. - * @hide - */ - public boolean stopAdvertising(AdvertiseCallback callback) { - try { - IBluetoothGatt iGatt = mManagerService.getBluetoothGatt(); - if (iGatt == null) { - // BLE is not supported - return false; - } - if (mAdvertisingGattCallback == null) { - // no callback. - return false; - } - // Make sure same callback is used for start and stop advertising. - if (callback != mAdvertisingGattCallback.mAdvertiseCallback) { - Log.e(TAG, "must use the same callback for star/stop advertising"); - return false; - } - mAdvertisingGattCallback.stopAdvertising(); - return true; - } catch (RemoteException e) { - Log.e(TAG, "", e); - return false; - } - } - - /** * Return true if Bluetooth is currently enabled and ready for use. * <p>Equivalent to: * <code>getBluetoothState() == STATE_ON</code> @@ -1076,23 +935,6 @@ public final class BluetoothAdapter { } /** - * Returns whether BLE is currently advertising. - * <p>Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED}. - * - * @hide - */ - public boolean isAdvertising() { - if (getState() != STATE_ON) return false; - try { - IBluetoothGatt iGatt = mManagerService.getBluetoothGatt(); - return iGatt.isAdvertising(); - } catch (RemoteException e) { - Log.e(TAG, "", e); - } - return false; - } - - /** * Return the set of {@link BluetoothDevice} objects that are bonded * (paired) to the local adapter. * <p>If Bluetooth state is not {@link #STATE_ON}, this API @@ -1537,8 +1379,6 @@ public final class BluetoothAdapter { if (VDBG) Log.d(TAG, "onBluetoothServiceDown: " + mService); synchronized (mManagerCallback) { mService = null; - // Reset bluetooth adv scan data when Gatt service is down. - mBluetoothAdvScanData = null; for (IBluetoothManagerCallback cb : mProxyServiceStateCallbacks ){ try { if (cb != null) { @@ -1822,7 +1662,6 @@ public final class BluetoothAdapter { private static final int LE_CALLBACK_REG_TIMEOUT = 2000; private static final int LE_CALLBACK_REG_WAIT_COUNT = 5; - private final AdvertiseCallback mAdvertiseCallback; private final LeScanCallback mLeScanCb; // mLeHandle 0: not registered @@ -1838,27 +1677,12 @@ public final class BluetoothAdapter { mLeScanCb = leScanCb; mScanFilter = uuid; mLeHandle = 0; - mAdvertiseCallback = null; - } - - public GattCallbackWrapper(BluetoothAdapter bluetoothAdapter, LeScanCallback leScanCb, - UUID[] uuid, AdvertiseCallback callback) { - mBluetoothAdapter = new WeakReference<BluetoothAdapter>(bluetoothAdapter); - mLeScanCb = leScanCb; - mScanFilter = uuid; - mLeHandle = 0; - mAdvertiseCallback = callback; } public boolean scanStarted() { return waitForRegisteration(LE_CALLBACK_REG_WAIT_COUNT); } - public boolean advertiseStarted() { - // Wait for registeration callback. - return waitForRegisteration(1); - } - private boolean waitForRegisteration(int maxWaitCount) { boolean started = false; synchronized(this) { @@ -1878,27 +1702,6 @@ public final class BluetoothAdapter { return started; } - public void stopAdvertising() { - synchronized (this) { - if (mLeHandle <= 0) { - Log.e(TAG, "Error state, mLeHandle: " + mLeHandle); - return; - } - BluetoothAdapter adapter = mBluetoothAdapter.get(); - if (adapter != null) { - try { - IBluetoothGatt iGatt = adapter.getBluetoothManager().getBluetoothGatt(); - iGatt.stopAdvertising(); - } catch (RemoteException e) { - Log.e(TAG, "Failed to stop advertising" + e); - } - } else { - Log.e(TAG, "stopAdvertising, BluetoothAdapter is null"); - } - notifyAll(); - } - } - public void stopLeScan() { synchronized(this) { if (mLeHandle <= 0) { @@ -1940,18 +1743,14 @@ public final class BluetoothAdapter { BluetoothAdapter adapter = mBluetoothAdapter.get(); if (adapter != null) { iGatt = adapter.getBluetoothManager().getBluetoothGatt(); - if (mAdvertiseCallback != null) { - iGatt.startAdvertising(mLeHandle); + if (mScanFilter == null) { + iGatt.startScan(mLeHandle, false); } else { - if (mScanFilter == null) { - iGatt.startScan(mLeHandle, false); - } else { - ParcelUuid[] uuids = new ParcelUuid[mScanFilter.length]; - for(int i = 0; i != uuids.length; ++i) { - uuids[i] = new ParcelUuid(mScanFilter[i]); - } - iGatt.startScanWithUuids(mLeHandle, false, uuids); - } + ParcelUuid[] uuids = new ParcelUuid[mScanFilter.length]; + for(int i = 0; i != uuids.length; ++i) { + uuids[i] = new ParcelUuid(mScanFilter[i]); + } + iGatt.startScanWithUuids(mLeHandle, false, uuids); } } else { Log.e(TAG, "onClientRegistered, BluetoothAdapter null"); @@ -2080,44 +1879,6 @@ public final class BluetoothAdapter { } public void onAdvertiseStateChange(int advertiseState, int status) { - Log.d(TAG, "on advertise call back, state: " + advertiseState + " status: " + status); - if (advertiseState == STATE_ADVERTISE_STARTED) { - if (status == ADVERTISE_CALLBACK_SUCCESS) { - mAdvertiseCallback.onAdvertiseStart(status); - } else { - // If status is unsuccessful and advertise state is started, it means stop - // advertising fails. - mAdvertiseCallback.onAdvertiseStop(status); - } - } else { - synchronized (this) { - if (status == ADVERTISE_CALLBACK_SUCCESS) { - BluetoothAdapter adapter = mBluetoothAdapter.get(); - if (adapter != null) { - try { - IBluetoothGatt iGatt = - adapter.getBluetoothManager().getBluetoothGatt(); - Log.d(TAG, "unregistering client " + mLeHandle); - iGatt.unregisterClient(mLeHandle); - // Reset advertise app handle. - mLeHandle = -1; - adapter.mAdvertisingGattCallback = null; - } catch (RemoteException e) { - Log.e(TAG, "Failed to unregister client" + e); - } - } else { - Log.e(TAG, "cannot unregister client, BluetoothAdapter is null"); - } - } - } - if (status == ADVERTISE_CALLBACK_SUCCESS) { - mAdvertiseCallback.onAdvertiseStop(status); - } else{ - // If status is unsuccesful and advertise state is stopped, it means start - // advertising fails. - mAdvertiseCallback.onAdvertiseStart(status); - } - } } @Override diff --git a/framework/java/android/bluetooth/BluetoothAdvScanData.java b/framework/java/android/bluetooth/BluetoothAdvScanData.java deleted file mode 100644 index df2c25629a..0000000000 --- a/framework/java/android/bluetooth/BluetoothAdvScanData.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.bluetooth; -import android.os.ParcelUuid; -import android.os.RemoteException; -import android.util.Log; - -import java.util.Collections; -import java.util.List; - - -/** - * This class provides the public APIs to set advertising and scan response data when BLE device - * operates in peripheral mode. <br> - * The exact format is defined in Bluetooth 4.0 specification, Volume 3, Part C, Section 11 - * @hide - */ -public final class BluetoothAdvScanData { - - /** - * Available data types of {@link BluetoothAdvScanData}. - */ - public static final int AD = 0; // Advertising Data - public static final int SCAN_RESPONSE = 1; // Scan Response - public static final int EIR = 2; // Extended Inquiry Response - - private static final String TAG = "BluetoothAdvScanData"; - - /** - * Data type of BluetoothAdvScanData. - */ - private final int mDataType; - /** - * Bluetooth Gatt Service. - */ - private IBluetoothGatt mBluetoothGatt; - - /** - * @param mBluetoothGatt - * @param dataType - */ - public BluetoothAdvScanData(IBluetoothGatt mBluetoothGatt, int dataType) { - this.mBluetoothGatt = mBluetoothGatt; - this.mDataType = dataType; - } - - /** - * @return advertising data type. - */ - public int getDataType() { - return mDataType; - } - - /** - * Set manufactureCode and manufactureData. - * Returns true if manufacturer data is set, false if there is no enough room to set - * manufacturer data or the data is already set. - * @param manufacturerCode - unique identifier for the manufacturer - * @param manufacturerData - data associated with the specific manufacturer. - */ - public boolean setManufacturerData(int manufacturerCode, byte[] manufacturerData) { - if (mDataType != AD) return false; - try { - return mBluetoothGatt.setAdvManufacturerCodeAndData(manufacturerCode, manufacturerData); - } catch (RemoteException e) { - Log.e(TAG, "Unable to set manufacturer id and data.", e); - return false; - } - } - - /** - * Set service data. Note the service data can only be set when the data type is {@code AD}; - * @param serviceData - */ - public boolean setServiceData(byte[] serviceData) { - - if (mDataType != AD) return false; - if (serviceData == null) return false; - try { - return mBluetoothGatt.setAdvServiceData(serviceData); - } catch (RemoteException e) { - Log.e(TAG, "Unable to set service data.", e); - return false; - } - } - - /** - * Returns an immutable list of service uuids that will be advertised. - */ - public List<ParcelUuid> getServiceUuids() { - try { - return Collections.unmodifiableList(mBluetoothGatt.getAdvServiceUuids()); - } catch (RemoteException e) { - Log.e(TAG, "Unable to get service uuids.", e); - return null; - } - } - - /** - * Returns manufacturer data. - */ - public byte[] getManufacturerData() { - if (mBluetoothGatt == null) return null; - try { - return mBluetoothGatt.getAdvManufacturerData(); - } catch (RemoteException e) { - Log.e(TAG, "Unable to get manufacturer data.", e); - return null; - } - } - - /** - * Returns service data. - */ - public byte[] getServiceData() { - if (mBluetoothGatt == null) return null; - try { - return mBluetoothGatt.getAdvServiceData(); - } catch (RemoteException e) { - Log.e(TAG, "Unable to get service data.", e); - return null; - } - } - - /** - * Remove manufacturer data based on given manufacturer code. - * @param manufacturerCode - */ - public void removeManufacturerCodeAndData(int manufacturerCode) { - if (mBluetoothGatt != null) { - try { - mBluetoothGatt.removeAdvManufacturerCodeAndData(manufacturerCode); - } catch (RemoteException e) { - Log.e(TAG, "Unable to remove manufacturer : " + manufacturerCode, e); - } - } - } -} diff --git a/framework/java/android/bluetooth/IBluetoothGatt.aidl b/framework/java/android/bluetooth/IBluetoothGatt.aidl index 0f0eee67fa..6d4b9cd45f 100644 --- a/framework/java/android/bluetooth/IBluetoothGatt.aidl +++ b/framework/java/android/bluetooth/IBluetoothGatt.aidl @@ -48,15 +48,6 @@ interface IBluetoothGatt { void unregisterClient(in int clientIf); void clientConnect(in int clientIf, in String address, in boolean isDirect, in int transport); void clientDisconnect(in int clientIf, in String address); - void startAdvertising(in int appIf); - void stopAdvertising(); - boolean setAdvServiceData(in byte[] serviceData); - byte[] getAdvServiceData(); - boolean setAdvManufacturerCodeAndData(int manufactureCode, in byte[] manufacturerData); - byte[] getAdvManufacturerData(); - List<ParcelUuid> getAdvServiceUuids(); - void removeAdvManufacturerCodeAndData(int manufacturerCode); - boolean isAdvertising(); void refreshDevice(in int clientIf, in String address); void discoverServices(in int clientIf, in String address); void readCharacteristic(in int clientIf, in String address, in int srvcType, diff --git a/framework/java/android/bluetooth/IBluetoothGattCallback.aidl b/framework/java/android/bluetooth/IBluetoothGattCallback.aidl index af218eb26a..18e3f54ecf 100644 --- a/framework/java/android/bluetooth/IBluetoothGattCallback.aidl +++ b/framework/java/android/bluetooth/IBluetoothGattCallback.aidl @@ -64,7 +64,6 @@ oneway interface IBluetoothGattCallback { in int charInstId, in ParcelUuid charUuid, in byte[] value); void onReadRemoteRssi(in String address, in int rssi, in int status); - void onAdvertiseStateChange(in int advertiseState, in int status); void onMultiAdvertiseCallback(in int status); void onConfigureMTU(in String address, in int mtu, in int status); void onConnectionCongested(in String address, in boolean congested); diff --git a/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java index e232512f8e..af79fcc5aa 100644 --- a/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java +++ b/framework/java/android/bluetooth/le/BluetoothLeAdvertiser.java @@ -332,11 +332,6 @@ public final class BluetoothLeAdvertiser { } @Override - public void onAdvertiseStateChange(int advertiseState, int status) { - // no op - } - - @Override public void onMultiAdvertiseCallback(int status) { // TODO: This logic needs to be re-visited to account // for whether the scan has actually been started diff --git a/framework/java/android/bluetooth/le/BluetoothLeScanner.java b/framework/java/android/bluetooth/le/BluetoothLeScanner.java index 7e87edc127..220aa7718c 100644 --- a/framework/java/android/bluetooth/le/BluetoothLeScanner.java +++ b/framework/java/android/bluetooth/le/BluetoothLeScanner.java @@ -409,11 +409,6 @@ public final class BluetoothLeScanner { } @Override - public void onAdvertiseStateChange(int advertiseState, int status) { - // no op - } - - @Override public void onMultiAdvertiseCallback(int status) { // no op } |
