[英]Android Bluetooth Low Energy: Switching from Peripheral To Central
我想我在这里撞墙。 我有两个设备:运行Android 6.0的Mediatek Desire Plus和运行Android 6.0的ASUS X008DC。 在一台设备上,我运行ReaderActivity,在另一台设备上(ASUS),我运行WriterActivity。 ReaderActivity应该执行以下操作:
WriterActivity应该与ReaderActivity相反:
问题是:在两个设备上,一切正常,直到第2点为止。在切换角色之后,两个设备都看不到对方,换句话说,永远不会调用WriterActivity的onScanResult。
我已经尝试了ALMOST的所有方法:从重新启动蓝牙(使用异步的BroadcastReceiver),到在给定的空闲时间中断两个设备的扫描/广告,再到停止WIFI连接,...
我在此放弃BLE,回到标准蓝牙。 这可能还不是稳定的技术。 我在这里想念什么? 在此先感谢您的时间。
编辑1:我在两个设备上都从Play商店安装了“ BLE Central,Peripheral Checker”,这表明两个设备都支持BT classic,Central和Peripheral。
错误是,一台设备联发科技Desire不需要Android 23许可请求,而另一台ASUS更加严格,并要求它允许扫描BLE设备。 这是在onCreate方法内部调用的函数,可以永久解决此问题:
private void checkNetworkLocation() {
try {
boolean gps_enabled = false, network_enabled = false;
LocationManager localLocationManager =
(LocationManager) getSystemService(LOCATION_SERVICE);;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if ((checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
|| (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
throw new Exception();
}
}
try {
gps_enabled = localLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch(Exception ex) {}
try {
network_enabled = localLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
} catch(Exception ex) {}
if(!gps_enabled && !network_enabled) {
new AlertDialog.Builder(this).setMessage("Location service is disabled, please enable it to find BLE devices.").setCancelable(false).setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface paramAnonymousDialogInterface, int paramAnonymousInt) {
DeviceScanActivity.this.startActivityForResult(new Intent("android.settings.LOCATION_SOURCE_SETTINGS"), 0);
}
}).show();
}
return;
} catch (Exception e) {
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.