小编Jac*_*osi的帖子

Android 6.0上的蓝牙低功耗startScan找不到设备

我正在使用Nexus 5开发一个使用蓝牙低功耗的应用程序.它在Lollipop上工作,现在它不能用于Marshmallow.我在清单和活动中的runTime上设置了ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION权限.

这是ScanFilters列表:

mScanFilterTest = new ScanFilter.Builder().build();
mScanFilter = new ArrayList<ScanFilter>();
mScanFilter.add(mScanFilterTest);
Run Code Online (Sandbox Code Playgroud)

这些是设置:

mScanSettings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_POWER).setReportDelay(0)
                .setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES).build();
Run Code Online (Sandbox Code Playgroud)

这些是我的回调:

 mBLEScan = new ScanCallback() {
     @Override
     public void onScanResult(int callbackType, ScanResult result) {
         super.onScanResult(callbackType, result);
         Log.i(TAG, "******************************************");
         Log.i(TAG, "The scan result " + result);
         Log.i(TAG, "------------------------------------------");
         }
     };
Run Code Online (Sandbox Code Playgroud)

这是我的电话:

mBluetoothLeScanner.startScan(mScanFilter, mScanSettings, mBLEScan);
Run Code Online (Sandbox Code Playgroud)

它开始扫描但没有找到任何设备.请帮我!!!!

android bluetooth bluetooth-lowenergy android-6.0-marshmallow

46
推荐指数
1
解决办法
4万
查看次数

使用Android 6.0的BluetoothLeScanner.startScan无法发现设备

我正在尝试使用BluatoothLeScanner.startScan功能而不是弃用的BluetoothAdapter.startLeScan.昨天我将我的Nexus 5更新到Android 6.0,从那时起我的应用程序就不再起作用了.我首先添加了此处所需的ACCESS_COARSE_LOCATION首选项, https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id.然后我添加了此处所述的权限:https://developer.android.com/training/permissions/requesting.html.但最后它似乎无法正常工作,它不会发送回设备.

这是我的代码:

表现

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.stm.sensitronapp">
          <uses-sdk android:maxSdkVersion="23"/>
          <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>

          <uses-permission android:name="android.permission.BLUETOOTH"/>
          <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
          <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>`
Run Code Online (Sandbox Code Playgroud)

DeviceScanActivity

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
...

if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION)
            != PackageManager.PERMISSION_GRANTED){
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.ACCESS_COARSE_LOCATION)) {
        } else {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
                    MY_PERMISSIONS_REQUEST_ACCESS_COARSE);
        }
    }

// Device scan callback.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            mScanCallback = new ScanCallback() {
                @Override
                public void onScanResult(int …
Run Code Online (Sandbox Code Playgroud)

android bluetooth-lowenergy android-bluetooth android-6.0-marshmallow

21
推荐指数
2
解决办法
2万
查看次数