android 开发,蓝牙有时出现扫描不到
<uses-feature
    android:name="android.hardware.bluetooth_le"
    android:required="true" />

<uses-sdk
    android:minSdkVersion="18"
    android:targetSdkVersion="20" />

<uses-feature
    android:name="android.hardware.bluetooth.ble"
    android:required="true" />

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

权限如上,
功能:我在做一个使用蓝牙操作附近的蓝牙锁。扫描附近的设备后,用列表显示搜索到的,连接其中一个锁进行开关操作界面进行操作。
现象:正常情况下是,随时都可以扫描到附近设备。但是有时候操作完,退回到列表页时,会出现搜索不到的现象。附近的所有锁都扫描不到,需要关闭蓝牙,重新打开才能扫描到,这是偶尔出现的现象。
图片说明
有没有人知道这是怎么回事呢?

3

2个回答

我也遇到同样的问题了,在网上找到的答案是:蓝牙功能跟定位权限页有关,所以你把定位的权限也加上应该就能解决问题了,我是这么解决的。

0
qq_31515761
coder_you 定位权限已经开了。我查了是说资源没有释放掉。现在加了释放资源,还没测试结果会怎么样。
接近 2 年之前 回复
u013268154
批判是一个大嘴巴子 你关闭蓝牙重新打开能搜到是因为你的手机系统蓝牙搜索到了蓝牙设备,而你的程序注册了系统的广播,这样就会出现搜索到的情况
接近 2 年之前 回复

这边有很多的东西要注意的 service要关闭,广播要注销,连接要断开,列表的数据要notfiychange

-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android BLE蓝牙扫描不到数据及解决方法
        在低功耗蓝牙(BLE)开发过程中碰到过不少坑,作为记录总结一下在开发过程中关于开启扫描遇到的问题。         开发低功耗蓝牙过程中因为Android系统的不断升级和优化,关于BLE的开发也会在升级过程中遇到不同的问题。关于开启扫描问题总结如: 在开发过程中关闭扫描后再开启扫描不成功问题         在开发过程中不可避免的会遇到关闭扫描开启扫描如此重复操作的问题...
Android 蓝牙(4.0)BLE开发 扫描IBeacon
一.扫描蓝牙设备1.  在程序manifest文件中添加声明蓝牙权限的代码。&amp;lt;uses-permission android:name=&quot;android.permission.BLUETOOTH&quot; /&amp;gt;&amp;lt;uses-permission android:name=&quot;android.permission.BLUETOOTH_ADMIN&quot; /&amp;gt;如果想让程序只能在支持BLE设备上运...
Android蓝牙4.0扫描
本文主要记录一下Android扫描蓝牙设备的方法。 初始化蓝牙和注册广播: private void initBluetooth() { mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter != null) { In...
Android蓝牙扫描
Android蓝牙扫描代码块import android.annotation.SuppressLint; import android.app.Service; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.Bluet
Android蓝牙扫描和连接!
最近在做蓝牙签到功能时,了解了蓝牙的一部分知识,虽然不够深入,但是感觉良好,他的整体思路如下: 在指定时间内,打开蓝牙,扫描周边蓝牙信号,如果有指定的蓝牙,则由用户确认连接蓝牙,最终签到成功. 首先,我们先写一个工具类,来判断当前时间是否在指定时间之内:/** * 判断时间是否在时间段内 * * @param date * 当前时间
android 蓝牙重复扫描
我想在service内让蓝牙可以一直执行扫描,之前在activity内可以重复扫描,但移植到服务后就不能了请问要怎么解决?rnrnpublic class search_beacon extends Service implements LocationListener rnrn HashMap record = new HashMap();rn private Long startTime;rn private Handler timer = new Handler();rn LocationManager locationManager;rn String best_loc;rn double latitude;rn double longitude;rn String sql;rnrn private BluetoothAdapter mBluetoothAdapter;rn private int REQUEST_ENABLE_BT = 1234;rn private Handler mHandler;rn private static final long SCAN_PERIOD = 10000;rn private BluetoothLeScanner mLEScanner;rn private ScanSettings settings;rn private List filters;rnrnrn @Nullablern @Overridern public IBinder onBind(Intent intent) rn return null;rn rnrn @Overridern public void onCreate()rn Log.i("search_beacon", "Enter onCreate()");rn super.onCreate();rn Log.i("search_beacon", "Leave onCreate()");rn rnrn @Overridern public int onStartCommand(Intent intent, int flags, int startId) rn Log.i("search_beacon","Enter onStartCommand()");rn rn //宣告倒數rn mHandler = new Handler();rn //blern if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) rn Toast.makeText(this, "BLE Not Supported",rn Toast.LENGTH_SHORT).show();rn rn final BluetoothManager bluetoothManager =rn (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);rn mBluetoothAdapter = bluetoothManager.getAdapter();rn //gpsrn locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);rn //set the location providerrn Criteria criteria = new Criteria();rn criteria.setAccuracy(Criteria.ACCURACY_COARSE);rn best_loc = locationManager.getBestProvider(criteria, true);rn if (best_loc != null) rn Location loc = locationManager.getLastKnownLocation(best_loc);rn showlocation(loc);rn rnrn //計時器設定rn startTime = System.currentTimeMillis();rn //設定定時要執行的方法rn timer.removeCallbacks(updateTimer);rn //設定Delay的時間rn timer.postDelayed(updateTimer, 5000);rnrnrn if (mBluetoothAdapter.isEnabled()) rn if (Build.VERSION.SDK_INT >= 21) rn mLEScanner = mBluetoothAdapter.getBluetoothLeScanner();rnrn filters = new ArrayList();rn settings = new ScanSettings.Builder()rn .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)rn .build();rn rn scanLeDevice(true);rn rnrn return Service.START_STICKY; rn rnrnrn private void scanLeDevice(final boolean enable) rn if (enable) rnrn mHandler.postDelayed(new Runnable() rn @Overridern public void run() rn if (Build.VERSION.SDK_INT < 21) rn mBluetoothAdapter.stopLeScan(mLeScanCallback);rn else rn mLEScanner.stopScan(mScanCallback);rn rn rn , SCAN_PERIOD);rnrn if (Build.VERSION.SDK_INT < 21) rn mBluetoothAdapter.startLeScan(mLeScanCallback);rn else rn mLEScanner.startScan(filters, settings, mScanCallback);rn rn else rn if (Build.VERSION.SDK_INT < 21) rn mBluetoothAdapter.stopLeScan(mLeScanCallback);rn else rn mLEScanner.stopScan(mScanCallback);rn rn rn rnrn String device_mac;rn Integer device_rssi;rn private ScanCallback mScanCallback = new ScanCallback() rn @Overridern public void onScanResult(int callbackType, ScanResult result) rn Log.i("callbackType", String.valueOf(callbackType));rn Log.i("result", result.toString());rn BluetoothDevice btDevice = result.getDevice();rn //connectToDevice(btDevice);rn Log.i("jiejv",btDevice.getAddress());rn device_mac = btDevice.getAddress();rn device_rssi = result.getRssi();rn String check_mac=device_mac.substring(0, 11); //第十一碼以前,不含十一rn if(device_mac.equals(null) || device_rssi== null)rn Log.i("jiejv",device_mac+"空空空"+device_rssi);rn else if(check_mac.equals("01:17:C5:57"))rn rn record.put(device_mac,device_rssi);rn rnrn //if(update_record(device_mac,device_rssi))rn Log.i("jiejv",device_mac+" "+device_rssi);rn rnrn @Overridern public void onBatchScanResults(List results) rn for (ScanResult sr : results) rn Log.i("ScanResult - Results", sr.toString());rn rn rnrn @Overridern public void onScanFailed(int errorCode) rn Log.e("Scan Failed", "Error Code: " + errorCode);rn rn ;rnrn private BluetoothAdapter.LeScanCallback mLeScanCallback =rn new BluetoothAdapter.LeScanCallback() rn rn @Overridern public void onLeScan(final BluetoothDevice device, int rssi,rn byte[] scanRecord) rn runOnUiThread(new Runnable() rn @Overridern public void run() rn Log.i("onLeScan", device.toString());rn //connectToDevice(device);rn rn );rn rn ;rnrnrn //固定要執行的方法rn private Runnable updateTimer = new Runnable() rn public void run() rnrn Iterator it = record.entrySet().iterator();rn while(it.hasNext())rn rn Map.Entry me = (Map.Entry)it.next();rn String mac = me.getKey().toString();rn int rs = (int)me.getValue();rn if(update_record(mac,rs))rn rnrn Log.i("timer",mac+" "+rs);rn // record.remove(me.getKey());rn rnrn rn record.clear();rn timer.postDelayed(this, 10000);rn rn ;rnrn @Overridern public void onDestroy() rn Log.i("search_beacon","Enter onDestroy()");rn super.onDestroy();rn handler1.removeCallbacks(showTime); //利用removeCallbacks()停止handler.post(showTime)rn Log.i("search_beacon","Leave onDestroy()");rn rnrn
Android蓝牙扫描,配对
Android开发使用到蓝牙一般都是外设的连接,像连接打印机什么的,手机跟手机的使用自带的功能就可以了 使用权限 &amp;lt;uses-permission android:name=&quot;android.permission.BLUETOOTH&quot;/&amp;gt; &amp;lt;!-- 使用扫描和设置蓝牙的权限(申明这一个权限必须申明上面一个权限) --&amp;gt; &amp;lt;uses-perm...
android 蓝牙扫描
源代码通过调用接口实现打开蓝牙进行扫描,连接设备
Android蓝牙ble扫描
酒已经准备好了,各位看客,请准备好小板凳。 理论性的东西就不写太多了,推荐一个挺好的博文 http://www.jianshu.com/p/de82f411a7fc  官方文档的翻译(简书): http://www.jianshu.com/p/bc408af3dd92 复制一些重要的理论过来,也方便你们查看: 扫盲 蓝牙有传统蓝牙(3.0以下)和低
Android 蓝牙4.0BLE开发出现的问题
1.Android 蓝牙4.0BLE兼容问题出现的现象 1.魅族测试机版本为5.1,项目清单文件的 “targetSdkVersion” 版本为18或23,都可以搜寻到附近的蓝牙设备; 2.华为测试机版本为6.0,项目清单文件的 “targetSdkVersion” 版本为23,搜寻不到附近的蓝牙设备; “targetSdkVersion” 为18或20获22,都可以搜寻到附近的蓝牙设备; 2.调试
android 蓝牙搜索不到Ble设备
      今天写好了项目准备交给测试人员去测试,但是问题来了,我平时运行的都是自己的手机,sdk版本是5.0(21)的,但是测试组给我的手机是安卓4.4的,结果搜都搜不到Ble设备,苦逼了好久,我拿了一个demo对比,发现demo可以搜索的到,然后我就对着代码看,看完了也没发现个所以然,最后我决定自己写个demo,很简单,只要实现搜索功能就可以了,结果并没什么卵用,依然搜不到,我是知道adapt...
Android 蓝牙4.0踩坑—扫描不到设备
蓝牙打开之后启动扫描。用2.0 bluetoothAdapter.startDiscovery();这个方法可以发现蓝牙设备。 但是使用低功耗蓝牙的api: BluetoothLeScanner bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner(); bluetoothLeScanner.startScan(scanC...
android 蓝牙BLE扫描和wifi扫描总结
做室内定位的程序员应该都知道,在android 5.0之后,google推出了蓝牙扫描新接口,我们在实测中发现出一些问题,现在给大家列出,以供参考: 1.android 4.3.1(Build.VERSION_CODES.JELLY_BEAN_MR2)增加的startLeScan(callback)方法,官方在5.0之后不建议使用,实测此方法,4.3至目前6.0版本还是很稳定的,毫秒级无限返回蓝
delphi xe android 蓝牙扫描
自己写的ble 蓝牙检索程序,用于寻找蓝牙的服务uuid 和特征uuid
android蓝牙BLE(一) —— 扫描
Google在android 4.3(API Level 18)的android版本中引入了低功耗蓝牙BLE核心API。低功耗蓝牙BLE也就是我们经常说的蓝牙4.0, 该技术拥有极低的运行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。先不讲蓝牙协议与蓝牙模块一些类的作用与之间的关系,本章仅仅记录android Ble开发中的扫描模块及其一些细节。 一、声明蓝牙权限和定位权限 ...
Android经典蓝牙与低功耗蓝牙扫描
我最近做了一个蓝牙扫描Demo需要将经典蓝牙与BLE低功耗蓝牙进行分开扫描并且显示,发现了一些问题在次总结一下,首先是Android 6.0以后扫描蓝牙需要与定位权限,否则扫描不到。自己写的Demo是前30秒扫描经典蓝牙,后30秒扫描BLe蓝牙,按下扫描键是变成停止,停止扫描工作,再次点击为扫描。 申请蓝牙权限,首先需要自己写一个方法,requestPermission()这个方法用来判断自己是...
打开蓝牙扫描蓝牙
Lsn2_28_bluetoothActivity.java
Android 蓝牙手柄开发
基于Android平台的蓝牙游戏手柄: 1、Android系统为3.1及以上系统默认支持游戏手柄,3.1以下需要系统做相应的处理。我用的是国产4.0.3版本的手机; 2、国产机不给力,一直连接不上手柄,偶尔链接上之后操作又有问题,听说是为了降低成本,阉割了蓝牙模块。推荐测试机子:三星、HTC,链接后完全可控制手机(只测试了4.0及以上版本)。 3、触摸事件的模拟: 这个对我来说是一个难点,...
Android蓝牙4.0开发
本文主要展示一个Android蓝牙4.0的开发示例。一.蓝牙4.0      蓝牙4.0应用的设备一般是比较特殊的设备,比如低耗能蓝牙灯泡。并且使用的类的方法也是有点不同的。       BlueToothAdapter这个类是蓝牙设备的管理类。       BlueToothDevice蓝牙设备对象,里面包含蓝牙的数据。 上面两个类蓝牙设备都会有用到,下面这两个类只有蓝牙4.0才能用到。
android蓝牙4.0开发
需要android4.3以上的手机。需要蓝牙4.0适配器。
android 蓝牙sco开发
近段时间在做bluetooth双向通信,坑的不轻,各种问题不断,感觉这坑都填不完的一样。把这段时间的东西写下来,给需要的小伙伴参考下,能少坑是一点 public class Main2Activity extends AppCompatActivity { AudioManager mAm; InavrSR inavrSR; @Override protected voi
android 蓝牙BLE 开发
蓝牙开发分为传统蓝牙开发和低耗蓝牙开发(BLE),这边我就讲解下BLE的开发过程中的一些注意事项。 大致流程一般开发蓝牙的流程是 1.校验蓝牙是否开启,是否可用。 2.搜索设备,获取设备列表。 3.根据要链接的设备地址链接设备,用GATT回调。 4.Gatt回调中发现gatt服务,根据所要操作的gatt服务UUID,获取目标服务。 5.从获取的gatt服务中获取相应的特
Android蓝牙——HID开发
代码地址如下:http://www.demodashi.com/demo/13891.html 原文地址: https://blog.csdn.net/VNanyesheshou/article/details/61914974 一 环境 开发环境:  jdk1.6 Eclipse  or jdk1.8 AS3.0.1 运行环境:  华为V10(Android8.0) 实现功能:  Andro...
Android 蓝牙聊天开发
问题:rn BluetoothSocket socket = device.createRfcommSocketToServiveRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));rnrnsocket.connect();执行的时候曝出异常如下:rnjava.IOException:read failed,socket might closed or timeout.read ret:-1;rn这是什么意思?
Android 蓝牙基础功能的开发
Android 蓝牙基础功能的开发,功能包括扫描、连接、发送等,分为中央设备和外设蓝牙2个apk源码
android 蓝牙4.0开发
写博客,整理下自己学的零散的知识。说得好不如做得好,开始! android使用蓝牙4.0的条件:Android API Level 要在18及以上,即android 4.3以上。 参考1:http://www.android-doc.com/guide/topics/connectivity/bluetooth.html 参考2:http://www.2cto.com/kf/2014
android 蓝牙ble设备开发
//蓝牙通知广播 IntentFilter bluetoothFilter = new IntentFilter(); bluetoothFilter.addAction(tBluetoothAdapter.ACTION_STATE_CHANGED);// 蓝牙状态改变的广播 bluetoothFilter.addAction(BluetoothAdapter.A
Android 蓝牙音箱开发
项目下载地址github:1.打开蓝牙: mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); /**如果本地蓝牙没有开启,则开启*/ if (!mBluetoothAdapter.isEnabled()) { // 我们通过startActivityForResult()方法发起的Intent将会在onActivityR
Android 开发蓝牙
先上一张DEBUG图rn[img=https://img-bbs.csdn.net/upload/201806/11/1528691609_670551.png][/img]rn这个蓝牙搜索不到高版本的蓝牙,而且还会出现一些NULL的设备,不知道为什么rn下面是蓝牙搜索的部分代码(我觉得有问题的地方)rn[img=https://img-bbs.csdn.net/upload/201806/11/1528692070_687576.png][/img]rn还有就是链接是返回status=129rn[img=https://img-bbs.csdn.net/upload/201806/11/1528692161_463638.png][/img]rn
Android蓝牙库开发
做了一个Android下的串口的库(jar包)用于我们的设备,基于android-serialport-api扩展的rn现在要把这个库扩展下 支持蓝牙串口rnrn蓝牙模块的使用,我在上一版已经可以完成,但代码简单,所以才想复用新做的库,所以不用担心我蓝牙模块没用成的问题。rn上一版中,蓝牙的使用是得到BluetoothSocket 再获得 rnos=btsock.getOutputStream();rnis = btsock.getInputStream(); rnrn我在新库中是直接打开Android开发板串口的 也是得到rnOutputStream InputStreamrnrn现在我在库中增加了函数,外部传入 OutputStream InputStream 尝试无效果。rn外部传入BluetoothSocket 库内部getOutputStream 尝试还是无效果。rn无效果的意思就是 我发送数据 无数据 接收也收不到数据。rn所以小弟不明白了rn是不能这样直接将 Socket 或者 Stream传进去 还是我哪里做的不对?rn恳请指教rnrnAndroid版不给力。。。希望java版有谁指点下
Android蓝牙简单开发
NULL 博文链接:https://technicalsearch.iteye.com/blog/2002406
Android蓝牙2.0开发
因项目需要,做一个与2.0蓝牙模块连接的Demo,在此记录一下 1.先注册个广播,来接收一下蓝牙的状态 MyBroadCastRevciver broadcastReceiver = null; public void registerBroadcast(){ broadcastReceiver = new MyBroadCastRevciver(); IntentFilte...
Android蓝牙的开发
步骤:   /**注册搜索蓝牙receiver*/      mFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);      mFilter.addAction(BluetoothDevice.ACTION_FOUND);      mFilter.addAction(BluetoothDevice.
android蓝牙BLE开发
BLE简介 ble是指低功耗蓝牙,谷歌在Android4.3版本的时候加入了低功耗蓝牙的api,随着蓝牙的发展,低功耗成为了主要的方向。低功耗蓝牙的出现让市面上的电子产品越来越人性化,出现了智能手环,也使得我们的生活越来越离不开低功耗蓝牙,废话不多说,直接看BLE的开发步骤吧 1.需要的权限 &amp;lt;uses-permission android:name=&quot;android.permiss...
Android蓝牙A2dp开发
1,设置获取A2dp对象 /** * 服务监听器,通过绑定服务获取BluetoothA2dp对象 */ private BluetoothA2dp mBluetoothA2dp; public class MyServiceListener implements BluetoothProfile.ServiceListener { @Overr
svn更新项目有时能用,有时出现连接不到服务器
今天svn突然不能用了,更新的时候报rncould not connect to server (http://192.168....:81)rn但是用http网页是能够打开的,地址也是能ping通,rn公司同事的也都没问题,而且也重新安装了,但是就是有时突然好了,过一会又不行了
蓝牙扫描(经典蓝牙与Ble扫描)
自己写的代码,可以运行但是逻辑比较乱,可以看下我写的博客,希望可以帮助到你
蓝牙扫描
BLE蓝牙扫描经典蓝牙应该ALL Channel,不确定
Android蓝牙BLE开发,扫描、连接、发送和读取信息;
1、BLE开发权限 Android蓝牙BLE开发须打开蓝牙权限和6.0位置权限; &lt;uses-permission android:name="android.permission.BLUETOOTH" /&gt; &lt;uses-permission android:name="android.permission.BLUETOOTH...
Android 低功耗蓝牙(BLE)开发(4)-- 蓝牙扫描和连接
在了解了API里面的常用类和方法后,现在来看蓝牙打开和扫描的实现蓝牙扫描实现的基本步骤如下:1.添加权限 2.判断设备是否支持BLE 3.判断蓝牙是否开启,如果未开启,则弹出开启窗口 4.开启后,开始进行蓝牙扫描 5.通过BluetoothAdapter.LeScanCallback获取扫描结果下面具体来实现蓝牙的扫描过程1.权限的添加在AndroidMani