Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android 5.0(棒棒糖)中的蓝牙连接问题_Android_Bluetooth_Android 5.0 Lollipop - Fatal编程技术网

android 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

我正在开发基于蓝牙的应用程序

有一个用户希望通过蓝牙与其他用户的手机共享数据。 我面临一个问题

设备与其他设备配对。但如果配对设备有安卓5.0(棒棒糖)及以上版本的安卓操作系统,那么我面临的问题是,当屏幕关闭时,连接就会丢失。在安卓5.0之下,它工作正常“简言之,在棒棒糖中面对问题”那么为什么会发生这种情况呢

这是我的密码

    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设备再次扫描。是的,我签入默认蓝牙设置,设备完美列出。但在我的应用程序中,设备不可见。。。