- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有人可以检查这段代码的问题吗?我已经实现了一项服务并将 BluetoothDevice
对象传递给它(BluetoothDevice
对象通过 intent 传递没有错误/问题)。然后,在 onStartCommand()
中,我调用 deviceToConnect.connectGatt(this,false,mGattCallback)
。但是我的 BluetoothGattCallback()
不工作(不打印任何东西)。代码简单明了。有人可以帮我调试它吗?
编辑:我在 MainActivity()
中执行 Le device Scan 并将设备对象传递给服务以连接到设备。
public class PairedBleService extends Service
{
private BluetoothGatt mConnectedGatt;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
super.onStartCommand(intent, flags, startId);
BluetoothDevice deviceToConnect = (BluetoothDevice) intent.getParcelableExtra(DEVICE_TO_CONNECT);
mConnectedGatt = deviceToConnect.connectGatt(this, false, mGattCallback);
return START_STICKY;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
Toast.makeText(this, "Service End", Toast.LENGTH_SHORT).show();
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
private BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_CONNECTED) {
Toast.makeText(getApplicationContext(), "Peripheral connected", Toast.LENGTH_LONG).show();
} else if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_DISCONNECTED) {
Toast.makeText(getApplicationContext(), "Peripheral Disconnected", Toast.LENGTH_LONG).show();
} else if (status != BluetoothGatt.GATT_SUCCESS) {
gatt.disconnect();
}
}
}
编辑:我尝试将我的信标(外围设备)与标准的安卓蓝牙软件连接起来,然后我就可以建立连接了。但它要求配对引脚,一旦放置引脚,它就会连接并显示在已配对的蓝牙设备中。有没有像connectGatt
这样的方法,我们可以在其中向用户询问“配对密码”……我无法理解我错过了什么。
最佳答案
您的 onBind 方法返回 null,因此您的主要 Activity 无法与您的服务通信。
您的代码应如下所示,
@PairedBleService
public class LocalBinder extends Binder
{
PairedBleService getService()
{
return PairedBleService.this;
};
};
@Override
public IBinder onBind(Intent intent)
{
// TODO Auto-generated method stub
return mBinder;
};
private final IBinder mBinder = new LocalBinder();
@主要 Activity
//put this inside onServiceConnected
PairedBleService bleService = ((PairedBleService.LocalBinder) service).getService();
// Your code for connecting with BLE device
....................................
....................................
关于android - BLE connectGatt() 方法未在 BluetoothGattCallback 中报告任何内容....?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27316088/
我刚开始使用 Android,并使用低功耗蓝牙在 Android Studio 中设置了一个 API 21 项目。 深入研究 BluetoothDevice 向我展示了 ConnectGatt() 方
我的应用程序在连接到某些设备上的 BluetoothGatt 时出现问题。 所有 BLE 相关代码都驻留在 android Service 中,除 Huawei CAM-L03 外一切正常。据报道,一
有人可以检查这段代码的问题吗?我已经实现了一项服务并将 BluetoothDevice 对象传递给它(BluetoothDevice 对象通过 intent 传递没有错误/问题)。然后,在 onSta
我的目标是在低功耗蓝牙设备和手机之间建立自动连接。我按照示例代码进行操作,找到了这一行 // We want to directly connect to the device, so we are
我是一名优秀的程序员,十分优秀!