[英]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.