相关疑难解决方法(0)

GATT回调无法注册

我正在尝试编写一个通过蓝牙低功耗发送消息的应用程序,然后由我的外设中的UART传递.我按照这里的步骤操作,应用程序扫描并成功找到设备.但是,使用BluetoothGatt = BluetoothDevice.connectGatt(上下文,自动连接,回调)方法的连接失败,logcat说"无法注册回调".

来自:

//device scan callback
private BluetoothAdapter.LeScanCallback btScanCallback = new BluetoothAdapter.LeScanCallback() 
{
    @Override
    public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord)
    {       
        some stuff
        currBtGatt = device.connectGatt(parentActivity, false, btGattCallback);
    }
};
Run Code Online (Sandbox Code Playgroud)

和Gatt回调:

//GATT callback
private BluetoothGattCallback btGattCallback = new BluetoothGattCallback()
{       
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState)
    {
        // if connected successfully
        if(newState == BluetoothProfile.STATE_CONNECTED)
        {
            //discover services
            updateStatus("Connected");
            gatt.discoverServices();
        }
        else if(newState == BluetoothProfile.STATE_DISCONNECTED)
        {
            updateStatus("Disconnected");
        }
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

android bluetooth-lowenergy

49
推荐指数
1
解决办法
5万
查看次数

close()和disconnect()之间的区别?

Android的蓝牙低功耗API实现1种方法连接到该设备connectGatt(),但2种方法来关闭连接disconnect()close().

文件说:

  • disconnect():断开已建立的连接,或取消当前正在进行的连接尝试.

  • close():应用程序应在使用此GATT客户端完成后尽早调用此方法.

BluetoothGatt.java的源代码显示close()取消注册应用程序,disconnect()断开客户端连接.然而,它没有说明实际意味着什么.我的意思是,如果只有一种方法可以连接到客户端,为什么有两种方法可以关闭/断开连接?

android bluetooth bluetooth-lowenergy

43
推荐指数
2
解决办法
3万
查看次数

安卓蓝牙错误133

我正在尝试连接到 Android 上的蓝牙设备。我在onClientConnectionState处理程序中收到状态 133 。我并不总是收到此错误 - 有时它连接正常。我一直无法确定是什么触发了问题。我什至在重新启动设备和我的 repro 应用程序后立即拥有它。

我知道这个问题的几个问题和建议的解决方案,包括(来自这里这里这里):

  • 为所有 BT API 使用 UI 线程
  • 完成后一定要关闭 GATT

但我正在做这一切。更重要的是,我的设备是 Nexus 5(运行 Lollipop),根据某些人的说法,它甚至不需要在 UI 线程上进行 BT 交互。

我已经把最简单的复制品放在一起。它在 C# 中,但 Java 等价物应该很明显:

[Activity(Label = "BluetoothGatt133ErrorRepro", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
    protected override void OnCreate(Android.OS.Bundle bundle)
    {
        base.OnCreate(bundle);

        SetContentView(Resource.Layout.Main);
        var button = FindViewById<Button>(Resource.Id.button);
        button.Click += this.OnClick;
    }

    private async void OnClick(object sender, EventArgs e)
    {
        Action<string> log …
Run Code Online (Sandbox Code Playgroud)

c# java android bluetooth bluetooth-lowenergy

5
推荐指数
1
解决办法
3966
查看次数

标签 统计

android ×3

bluetooth-lowenergy ×3

bluetooth ×2

c# ×1

java ×1