首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓蓝牙低功耗readRemoteRssi

安卓蓝牙低功耗readRemoteRssi
EN

Stack Overflow用户
提问于 2013-10-15 01:08:54
回答 3查看 15.6K关注 0票数 5

我想不出如何让'onReadRemoteRssi‘回调工作。

我的代码非常简单:

代码语言:javascript
复制
final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
    BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();
    BluetoothGatt gatt;

    mBluetoothAdapter.startLeScan(new LeScanCallback() {

        @Override
        public void onLeScan(BluetoothDevice device, int rssi, byte[] record) {
            gatt = device.connectGatt(getApplicationContext(), false, new BluetoothGattCallback() {
                @Override
                public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
                    super.onReadRemoteRssi(gatt, rssi, status);
                    Log.d(TAG, "rssi is : " + rssi);
                }
            });
        }
    });

    gatt.readRemoteRssi(); //returns true

回调永远不会被调用。有谁知道吗?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-11-27 15:43:08

代码语言:javascript
复制
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
        String intentAction;
        if (newState == BluetoothProfile.STATE_CONNECTED) {
            intentAction = ACTION_GATT_CONNECTED;
            mConnectionState = STATE_CONNECTED;
            boolean rssiStatus = mBluetoothGatt.readRemoteRssi();
            broadcastUpdate(intentAction);
            // Attempts to discover services after successful connection.
            Log.i(TAG, "Attempting to start service discovery:" +
                    mBluetoothGatt.discoverServices());
        }
    }
};

并将onReadRemoteRssi放入BluetoothGattCallback函数中

代码语言:javascript
复制
@Override
public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status){
    if (status == BluetoothGatt.GATT_SUCCESS) {
        Log.d(TAG, String.format("BluetoothGatt ReadRssi[%d]", rssi));
    }
}
票数 6
EN

Stack Overflow用户

发布于 2013-10-16 14:46:20

http://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#readRemoteRssi()

开始读取信号强度的异步调用。

http://developer.android.com/reference/android/bluetooth/BluetoothGattCallback.html#onReadRemoteRssi(android.bluetooth.BluetoothGatt,%20int,%20int)

读取完成后的回调。

读取前需要连接

在此引用Continual Bluetooth LE Signal Strength on Android

票数 0
EN

Stack Overflow用户

发布于 2013-10-17 15:48:25

代码语言:javascript
复制
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(deviceAddress);
BluetoothGatt bluetoothGatt = getBluetoothGatt(device);

if (bluetoothGatt == null) {
    return false;
}
boolean rdRemoteRssi = bluetoothGatt.readRemoteRssi();
Log.d(FTAG, "BluetoothGatt readRemoteRssi : " + rdRemoteRssi);
return true;

在调用此接口之前,会先调用onReadRemoteRssi调用back.Need进行连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19365495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档