android 5.0(棒棒糖)中的蓝牙连接问题
我正在开发基于蓝牙的应用程序 有一个用户希望通过蓝牙与其他用户的手机共享数据。 我面临一个问题 设备与其他设备配对。但如果配对设备有安卓5.0(棒棒糖)及以上版本的安卓操作系统,那么我面临的问题是,当屏幕关闭时,连接就会丢失。在安卓5.0之下,它工作正常“简言之,在棒棒糖中面对问题”那么为什么会发生这种情况呢 这是我的密码android 5.0(棒棒糖)中的蓝牙连接问题,android,bluetooth,android-5.0-lollipop,Android,Bluetooth,Android 5.0 Lollipop,我正在开发基于蓝牙的应用程序 有一个用户希望通过蓝牙与其他用户的手机共享数据。 我面临一个问题 设备与其他设备配对。但如果配对设备有安卓5.0(棒棒糖)及以上版本的安卓操作系统,那么我面临的问题是,当屏幕关闭时,连接就会丢失。在安卓5.0之下,它工作正常“简言之,在棒棒糖中面对问题”那么为什么会发生这种情况呢 这是我的密码 private BluetoothAdapter mAdapter; mAdapter = BluetoothAdapter.getDefaultAdapte
private BluetoothAdapter mAdapter;
mAdapter = BluetoothAdapter.getDefaultAdapter();
if (!mAdapter.isEnabled()) {
@SuppressWarnings("static-access")
Intent enableBTIntent = new Intent(mAdapter.ACTION_REQUEST_ENABLE);
startActivity(enableBTIntent);
}
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(mReceiver1, filter);
find = new ArrayList<String>();
mAdapter.startDiscovery();
final BroadcastReceiver mReceiver1 = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
pdialog = ProgressDialog.show(FindPeopleActivity.this,
"Please wait", "Device Scanning...");
// discovery starts, we can show progress dialog or perform
// other tasks
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED
.equals(action)) {
if (pdialog != null && pdialog.isShowing())
pdialog.dismiss();
} else if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// bluetooth device found
BluetoothDevice device = (BluetoothDevice) intent
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
find.add(device.getAddress());
}
}
};
私人蓝牙适配器mAdapter;
mAdapter=BluetoothAdapter.getDefaultAdapter();
如果(!mAdapter.isEnabled()){
@抑制警告(“静态访问”)
Intent enablebintent=新意图(mAdapter.ACTION\u REQUEST\u ENABLE);
startActivity(启用BTIntent);
}
IntentFilter=newintentfilter();
filter.addAction(找到BluetoothDevice.ACTION);
filter.addAction(BluetoothAdapter.ACTION\u DISCOVERY\u已启动);
filter.addAction(BluetoothAdapter.ACTION\u DISCOVERY\u FINISHED);
registerReceiver(MRReceiver 1,过滤器);
find=newarraylist();
mAdapter.startDiscovery();
最终广播接收器mReceiver1=新广播接收器(){
公共void onReceive(上下文、意图){
String action=intent.getAction();
if(BluetoothAdapter.ACTION\u DISCOVERY\u STARTED.equals(ACTION)){
pdialog=ProgressDialog.show(FindPeopleActivity.this,
“请稍候”,“设备扫描…”);
//发现开始时,我们可以显示进度对话框或执行
//其他任务
}否则,如果(BluetoothAdapter.ACTION\u DISCOVERY\u完成
.equals(行动)){
if(pdialog!=null&&pdialog.isShowing())
pdialog.disclose();
}else if(BluetoothDevice.ACTION_FOUND.equals(ACTION)){
//找到蓝牙设备
BluetoothDevice设备=(BluetoothDevice)意图
.getParcelableExtra(蓝牙设备.EXTRA_设备);
find.add(device.getAddress());
}
}
};
在清单文件中
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
如果有任何解决方案,链接,任何不同的方法,将有很大的帮助。提前感谢。从Android 6.0开始,在清单上包含权限是不够的。您必须明确询问用户每个被认为是“危险的”
.BluetoothDevice的权限。找到操作
需要蓝牙和访问\u位置权限
uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
如果这不起作用,请发布您的错误日志。我有不同的方法来处理此问题 设备将被唤醒,直到数据、文件等无法传输。完成后,释放活动onDestroy()中的锁 所以这只适用于android 5.0或更高版本。您必须首先跟踪sdk,然后找到API级别21,然后执行此方法
看到这一点:,我认为它用于GPS。那么为什么我在蓝牙中使用它呢?Android 6.0中的蓝牙设备(包括信标)的后台扫描现在需要Android.permission.ACCESS\u FINE\u LOCATION或Android.permission.ACCESS\u rough\u LOCATION.:)我添加此权限并尝试..但不起作用:-有其他想法吗?当我从我的应用程序扫描时,在较低版本的手机中找不到棒棒糖设备,但在手机设置的默认蓝牙中完美显示..我认为在我的应用程序中它的版本兼容问题???我使用了
android:targetSdkVersion=“23”
当数据传输时,时间配对设备是否可能必须解锁。(仅适用于Lolipop设备)你能为lolipop设备的屏幕不锁定做一些硬编码吗?是的,这是个好主意,但首先从较低版本到较高版本找不到设备。例如,我的lolipop设备在jellybean设备中找不到。所以你能检查一下,默认的蓝牙设置吗?是否列出了设备?有时甚至已经连接,连接也会丢失例如,请参阅kitkate设备(即搜索lolipop设备)中的蓝牙设置lolipop设备是否可见。如果可见,则检查设备是否能够配对?如果不可见,则打开关闭蓝牙并从kitkate设备再次扫描。是的,我签入默认蓝牙设置,设备完美列出。但在我的应用程序中,设备不可见。。。