diff options
| -rw-r--r-- | Android.mk | 1 | ||||
| -rw-r--r-- | api/current.txt | 1 | ||||
| -rw-r--r-- | api/system-current.txt | 1 | ||||
| -rw-r--r-- | api/test-current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/bluetooth/BluetoothDevice.java | 61 | ||||
| -rw-r--r-- | core/java/android/bluetooth/BluetoothGatt.java | 168 | ||||
| -rw-r--r-- | core/java/android/bluetooth/BluetoothGattCallback.java | 6 | ||||
| -rw-r--r-- | core/java/android/bluetooth/BluetoothGattServerCallback.java | 6 | ||||
| -rw-r--r-- | core/java/android/bluetooth/IBluetoothGatt.aidl | 1 | ||||
| -rw-r--r-- | core/java/android/bluetooth/le/BluetoothLeAdvertiser.java | 1 | ||||
| -rw-r--r-- | core/java/android/bluetooth/le/IAdvertiserCallback.aidl | 29 |
11 files changed, 159 insertions, 117 deletions
diff --git a/Android.mk b/Android.mk index 28d1d6452103..e58f30661fbc 100644 --- a/Android.mk +++ b/Android.mk @@ -143,7 +143,6 @@ LOCAL_SRC_FILES += \ core/java/android/bluetooth/IBluetoothGatt.aidl \ core/java/android/bluetooth/IBluetoothGattCallback.aidl \ core/java/android/bluetooth/IBluetoothGattServerCallback.aidl \ - core/java/android/bluetooth/le/IAdvertiserCallback.aidl \ core/java/android/bluetooth/le/IAdvertisingSetCallback.aidl \ core/java/android/bluetooth/le/IPeriodicAdvertisingCallback.aidl \ core/java/android/bluetooth/le/IScannerCallback.aidl \ diff --git a/api/current.txt b/api/current.txt index 519724dbf58e..bd3d07a46549 100644 --- a/api/current.txt +++ b/api/current.txt @@ -7600,6 +7600,7 @@ package android.bluetooth { method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback); method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int); method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int); + method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int, android.os.Handler); method public boolean createBond(); method public android.bluetooth.BluetoothSocket createInsecureRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException; method public android.bluetooth.BluetoothSocket createRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException; diff --git a/api/system-current.txt b/api/system-current.txt index a3dd8d471543..bcbd248c69e4 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -8073,6 +8073,7 @@ package android.bluetooth { method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback); method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int); method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int); + method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int, android.os.Handler); method public boolean createBond(); method public android.bluetooth.BluetoothSocket createInsecureRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException; method public android.bluetooth.BluetoothSocket createRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException; diff --git a/api/test-current.txt b/api/test-current.txt index d13d9e0fb799..3ee9cb674b2d 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -7631,6 +7631,7 @@ package android.bluetooth { method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback); method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int); method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int); + method public android.bluetooth.BluetoothGatt connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback, int, int, android.os.Handler); method public boolean createBond(); method public android.bluetooth.BluetoothSocket createInsecureRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException; method public android.bluetooth.BluetoothSocket createRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException; diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 639e05622334..c4272688cb40 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -22,6 +22,8 @@ import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SystemApi; import android.content.Context; +import android.os.Handler; +import android.os.Looper; import android.os.Parcel; import android.os.Parcelable; import android.os.ParcelUuid; @@ -593,32 +595,38 @@ public final class BluetoothDevice implements Parcelable { public static final int TRANSPORT_LE = 2; /** - * Bluetooth LE 1M PHY. + * Bluetooth LE 1M PHY. Used to refer to LE 1M Physical Channel for advertising, scanning or + * connection. */ public static final int PHY_LE_1M = 1; /** - * Bluetooth LE 2M PHY. + * Bluetooth LE 2M PHY. Used to refer to LE 2M Physical Channel for advertising, scanning or + * connection. */ public static final int PHY_LE_2M = 2; /** - * Bluetooth LE Coded PHY. + * Bluetooth LE Coded PHY. Used to refer to LE Coded Physical Channel for advertising, scanning + * or connection. */ public static final int PHY_LE_CODED = 3; /** - * Bluetooth LE 1M PHY mask. + * Bluetooth LE 1M PHY mask. Used to specify LE 1M Physical Channel as one of many available + * options in a bitmask. */ public static final int PHY_LE_1M_MASK = 1; /** - * Bluetooth LE 2M PHY mask. + * Bluetooth LE 2M PHY mask. Used to specify LE 2M Physical Channel as one of many available + * options in a bitmask. */ public static final int PHY_LE_2M_MASK = 2; /** - * Bluetooth LE Coded PHY mask. + * Bluetooth LE Coded PHY mask. Used to specify LE Coded Physical Channel as one of many + * available options in a bitmask. */ public static final int PHY_LE_CODED_MASK = 4; @@ -1668,12 +1676,45 @@ public final class BluetoothDevice implements Parcelable { * {@link BluetoothDevice#TRANSPORT_BREDR} or {@link BluetoothDevice#TRANSPORT_LE} * @param phy preferred PHY for connections to remote LE device. Bitwise OR of any of * {@link BluetoothDevice#PHY_LE_1M_MASK}, {@link BluetoothDevice#PHY_LE_2M_MASK}, - * and {@link BluetoothDevice#PHY_LE_CODED_MASK}. This option does not take effect if - * {@code autoConnect} is set to true. - * @throws IllegalArgumentException if callback is null + * and {@link BluetoothDevice#PHY_LE_CODED_MASK}. This option does not take effect + * if {@code autoConnect} is set to true. + * @throws NullPointerException if callback is null */ public BluetoothGatt connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback, int transport, int phy) { + return connectGatt(context, autoConnect,callback, TRANSPORT_AUTO, PHY_LE_1M_MASK, null); + } + + /** + * Connect to GATT Server hosted by this device. Caller acts as GATT client. + * The callback is used to deliver results to Caller, such as connection status as well + * as any further GATT client operations. + * The method returns a BluetoothGatt instance. You can use BluetoothGatt to conduct + * GATT client operations. + * @param callback GATT callback handler that will receive asynchronous callbacks. + * @param autoConnect Whether to directly connect to the remote device (false) + * or to automatically connect as soon as the remote + * device becomes available (true). + * @param transport preferred transport for GATT connections to remote dual-mode devices + * {@link BluetoothDevice#TRANSPORT_AUTO} or + * {@link BluetoothDevice#TRANSPORT_BREDR} or {@link BluetoothDevice#TRANSPORT_LE} + * @param phy preferred PHY for connections to remote LE device. Bitwise OR of any of + * {@link BluetoothDevice#PHY_LE_1M_MASK}, {@link BluetoothDevice#PHY_LE_2M_MASK}, + * an d{@link BluetoothDevice#PHY_LE_CODED_MASK}. This option does not take effect + * if {@code autoConnect} is set to true. + * @param handler The handler to use for the callback. If {@code null}, callbacks will happen + * on the service's main thread. + * @throws NullPointerException if callback is null + */ + public BluetoothGatt connectGatt(Context context, boolean autoConnect, + BluetoothGattCallback callback, int transport, int phy, + Handler handler) { + if (callback == null) + throw new NullPointerException("callback is null"); + + if (handler == null) + handler = new Handler(Looper.getMainLooper()); + // TODO(Bluetooth) check whether platform support BLE // Do the check here or in GattServer? BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); @@ -1685,7 +1726,7 @@ public final class BluetoothDevice implements Parcelable { return null; } BluetoothGatt gatt = new BluetoothGatt(iGatt, this, transport, phy); - gatt.connect(autoConnect, callback); + gatt.connect(autoConnect, callback, handler); return gatt; } catch (RemoteException e) {Log.e(TAG, "", e);} return null; diff --git a/core/java/android/bluetooth/BluetoothGatt.java b/core/java/android/bluetooth/BluetoothGatt.java index 4aaf6bd3eb17..713dbf43d331 100644 --- a/core/java/android/bluetooth/BluetoothGatt.java +++ b/core/java/android/bluetooth/BluetoothGatt.java @@ -17,6 +17,7 @@ package android.bluetooth; import android.content.Context; +import android.os.Handler; import android.os.ParcelUuid; import android.os.RemoteException; import android.util.Log; @@ -43,6 +44,7 @@ public final class BluetoothGatt implements BluetoothProfile { private IBluetoothGatt mService; private BluetoothGattCallback mCallback; + private Handler mHandler; private int mClientIf; private BluetoothDevice mDevice; private boolean mAutoConnect; @@ -154,8 +156,14 @@ public final class BluetoothGatt implements BluetoothProfile { } mClientIf = clientIf; if (status != GATT_SUCCESS) { - mCallback.onConnectionStateChange(BluetoothGatt.this, GATT_FAILURE, - BluetoothProfile.STATE_DISCONNECTED); + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onConnectionStateChange(BluetoothGatt.this, GATT_FAILURE, + BluetoothProfile.STATE_DISCONNECTED); + } + }); + synchronized(mStateLock) { mConnState = CONN_STATE_IDLE; } @@ -181,11 +189,12 @@ public final class BluetoothGatt implements BluetoothProfile { return; } - try { - mCallback.onPhyUpdate(BluetoothGatt.this, txPhy, rxPhy, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onPhyUpdate(BluetoothGatt.this, txPhy, rxPhy, status); + } + }); } /** @@ -200,11 +209,12 @@ public final class BluetoothGatt implements BluetoothProfile { return; } - try { - mCallback.onPhyRead(BluetoothGatt.this, txPhy, rxPhy, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onPhyRead(BluetoothGatt.this, txPhy, rxPhy, status); + } + }); } /** @@ -221,11 +231,13 @@ public final class BluetoothGatt implements BluetoothProfile { } int profileState = connected ? BluetoothProfile.STATE_CONNECTED : BluetoothProfile.STATE_DISCONNECTED; - try { - mCallback.onConnectionStateChange(BluetoothGatt.this, status, profileState); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onConnectionStateChange(BluetoothGatt.this, status, profileState); + } + }); synchronized(mStateLock) { if (connected) { @@ -279,11 +291,12 @@ public final class BluetoothGatt implements BluetoothProfile { } } - try { - mCallback.onServicesDiscovered(BluetoothGatt.this, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onServicesDiscovered(BluetoothGatt.this, status); + } + }); } /** @@ -328,11 +341,12 @@ public final class BluetoothGatt implements BluetoothProfile { if (status == 0) characteristic.setValue(value); - try { - mCallback.onCharacteristicRead(BluetoothGatt.this, characteristic, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onCharacteristicRead(BluetoothGatt.this, characteristic, status); + } + }); } /** @@ -373,11 +387,12 @@ public final class BluetoothGatt implements BluetoothProfile { mAuthRetryState = AUTH_RETRY_STATE_IDLE; - try { - mCallback.onCharacteristicWrite(BluetoothGatt.this, characteristic, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onCharacteristicWrite(BluetoothGatt.this, characteristic, status); + } + }); } /** @@ -398,11 +413,12 @@ public final class BluetoothGatt implements BluetoothProfile { characteristic.setValue(value); - try { - mCallback.onCharacteristicChanged(BluetoothGatt.this, characteristic); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onCharacteristicChanged(BluetoothGatt.this, characteristic); + } + }); } /** @@ -442,11 +458,12 @@ public final class BluetoothGatt implements BluetoothProfile { mAuthRetryState = AUTH_RETRY_STATE_IDLE; - try { - mCallback.onDescriptorRead(BluetoothGatt.this, descriptor, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onDescriptorRead(BluetoothGatt.this, descriptor, status); + } + }); } /** @@ -485,11 +502,12 @@ public final class BluetoothGatt implements BluetoothProfile { mAuthRetryState = AUTH_RETRY_STATE_IDLE; - try { - mCallback.onDescriptorWrite(BluetoothGatt.this, descriptor, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onDescriptorWrite(BluetoothGatt.this, descriptor, status); + } + }); } /** @@ -508,11 +526,12 @@ public final class BluetoothGatt implements BluetoothProfile { mDeviceBusy = false; } - try { - mCallback.onReliableWriteCompleted(BluetoothGatt.this, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onReliableWriteCompleted(BluetoothGatt.this, status); + } + }); } /** @@ -526,11 +545,12 @@ public final class BluetoothGatt implements BluetoothProfile { if (!address.equals(mDevice.getAddress())) { return; } - try { - mCallback.onReadRemoteRssi(BluetoothGatt.this, rssi, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onReadRemoteRssi(BluetoothGatt.this, rssi, status); + } + }); } /** @@ -544,11 +564,13 @@ public final class BluetoothGatt implements BluetoothProfile { if (!address.equals(mDevice.getAddress())) { return; } - try { - mCallback.onMtuChanged(BluetoothGatt.this, mtu, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onMtuChanged(BluetoothGatt.this, mtu, status); + } + }); } /** @@ -564,12 +586,14 @@ public final class BluetoothGatt implements BluetoothProfile { if (!address.equals(mDevice.getAddress())) { return; } - try { - mCallback.onConnectionUpdated(BluetoothGatt.this, interval, latency, - timeout, status); - } catch (Exception ex) { - Log.w(TAG, "Unhandled exception in callback", ex); - } + + mHandler.post(new Runnable() { + @Override + public void run() { + mCallback.onConnectionUpdated(BluetoothGatt.this, interval, latency, + timeout, status); + } + }); } }; @@ -659,11 +683,12 @@ public final class BluetoothGatt implements BluetoothProfile { * @return If true, the callback will be called to notify success or failure, * false on immediate error */ - private boolean registerApp(BluetoothGattCallback callback) { + private boolean registerApp(BluetoothGattCallback callback, Handler handler) { if (DBG) Log.d(TAG, "registerApp()"); if (mService == null) return false; mCallback = callback; + mHandler = handler; UUID uuid = UUID.randomUUID(); if (DBG) Log.d(TAG, "registerApp() - UUID=" + uuid); @@ -716,7 +741,8 @@ public final class BluetoothGatt implements BluetoothProfile { * device becomes available (true). * @return true, if the connection attempt was initiated successfully */ - /*package*/ boolean connect(Boolean autoConnect, BluetoothGattCallback callback) { + /*package*/ boolean connect(Boolean autoConnect, BluetoothGattCallback callback, + Handler handler) { if (DBG) Log.d(TAG, "connect() - device: " + mDevice.getAddress() + ", auto: " + autoConnect); synchronized(mStateLock) { if (mConnState != CONN_STATE_IDLE) { @@ -727,7 +753,7 @@ public final class BluetoothGatt implements BluetoothProfile { mAutoConnect = autoConnect; - if (!registerApp(callback)) { + if (!registerApp(callback, handler)) { synchronized(mStateLock) { mConnState = CONN_STATE_IDLE; } diff --git a/core/java/android/bluetooth/BluetoothGattCallback.java b/core/java/android/bluetooth/BluetoothGattCallback.java index 11a15c66385a..c6f82ffb7ae4 100644 --- a/core/java/android/bluetooth/BluetoothGattCallback.java +++ b/core/java/android/bluetooth/BluetoothGattCallback.java @@ -30,7 +30,8 @@ public abstract class BluetoothGattCallback{ * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}. * @param rxPhy the receiver PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}. - * @param status status of the operation + * @param status Status of the PHY update operation. + * {@link BluetoothGatt#GATT_SUCCESS} if the operation succeeds. */ public void onPhyUpdate(BluetoothGatt gatt, int txPhy, int rxPhy, int status) { } @@ -43,7 +44,8 @@ public abstract class BluetoothGattCallback{ * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}. * @param rxPhy the receiver PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED}. - * @param status status of the operation + * @param status Status of the PHY read operation. + * {@link BluetoothGatt#GATT_SUCCESS} if the operation succeeds. */ public void onPhyRead(BluetoothGatt gatt, int txPhy, int rxPhy, int status) { } diff --git a/core/java/android/bluetooth/BluetoothGattServerCallback.java b/core/java/android/bluetooth/BluetoothGattServerCallback.java index 3b8f962bf73e..02307bd9ef9f 100644 --- a/core/java/android/bluetooth/BluetoothGattServerCallback.java +++ b/core/java/android/bluetooth/BluetoothGattServerCallback.java @@ -167,7 +167,8 @@ public abstract class BluetoothGattServerCallback { * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED} * @param rxPhy the receiver PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED} - * @param status status of the operation + * @param status Status of the PHY update operation. + * {@link BluetoothGatt#GATT_SUCCESS} if the operation succeeds. */ public void onPhyUpdate(BluetoothDevice device, int txPhy, int rxPhy, int status) { } @@ -180,7 +181,8 @@ public abstract class BluetoothGattServerCallback { * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED} * @param rxPhy the receiver PHY in use. One of {@link BluetoothDevice#PHY_LE_1M}, * {@link BluetoothDevice#PHY_LE_2M}, and {@link BluetoothDevice#PHY_LE_CODED} - * @param status status of the operation + * @param status Status of the PHY read operation. + * {@link BluetoothGatt#GATT_SUCCESS} if the operation succeeds. */ public void onPhyRead(BluetoothDevice device, int txPhy, int rxPhy, int status) { } diff --git a/core/java/android/bluetooth/IBluetoothGatt.aidl b/core/java/android/bluetooth/IBluetoothGatt.aidl index 582709c3ba47..12e9baaded91 100644 --- a/core/java/android/bluetooth/IBluetoothGatt.aidl +++ b/core/java/android/bluetooth/IBluetoothGatt.aidl @@ -32,7 +32,6 @@ import android.os.WorkSource; import android.bluetooth.IBluetoothGattCallback; import android.bluetooth.IBluetoothGattServerCallback; -import android.bluetooth.le.IAdvertiserCallback; import android.bluetooth.le.IAdvertisingSetCallback; import android.bluetooth.le.IPeriodicAdvertisingCallback; import android.bluetooth.le.IScannerCallback; diff --git a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java index ea3031b20177..0c7958dc9a3c 100644 --- a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java +++ b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java @@ -22,7 +22,6 @@ import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothUuid; import android.bluetooth.IBluetoothGatt; import android.bluetooth.IBluetoothManager; -import android.bluetooth.le.IAdvertiserCallback; import android.os.Handler; import android.os.Looper; import android.os.ParcelUuid; diff --git a/core/java/android/bluetooth/le/IAdvertiserCallback.aidl b/core/java/android/bluetooth/le/IAdvertiserCallback.aidl deleted file mode 100644 index c58b1dfec965..000000000000 --- a/core/java/android/bluetooth/le/IAdvertiserCallback.aidl +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2016 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.le; - -import android.bluetooth.le.AdvertiseSettings; - -/** - * Callback definitions for interacting with Advertiser - * @hide - */ -oneway interface IAdvertiserCallback { - void onAdvertiserRegistered(in int status, in int advertiserId); - - void onMultiAdvertiseCallback(in int status, boolean isStart, - in AdvertiseSettings advertiseSettings); -} |