You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android项目中BluetoothLeScanner无法解析的导入问题求助

解决Android项目导入库错误及BLE扫描实现问题

问题分析

当前项目编译正常但导入库出错,核心原因是AndroidX与旧版support库的依赖冲突;同时现有配置缺少BLE扫描所需的权限与必要代码实现配置,会影响后续功能开发。

解决方案

1. 修复依赖冲突

你的依赖中同时存在AndroidX库和旧版com.android.support:support-annotations:28.0.0,这会导致类加载冲突,直接移除该旧依赖:

dependencies {
    // 移除冲突的旧版依赖
    // implementation("com.android.support:support-annotations:28.0.0")
    
    // 保留其他AndroidX依赖
    implementation("androidx.appcompat:appcompat:1.7.0")
    implementation("com.google.android.material:material:1.12.0")
    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
    implementation("androidx.navigation:navigation-fragment:2.5.3")
    implementation("androidx.navigation:navigation-ui:2.5.3")
    implementation("androidx.preference:preference:1.2.0")
    implementation("androidx.legacy:legacy-support-v4:1.0.0")
    implementation("androidx.recyclerview:recyclerview:1.3.0")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.2.1")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
    implementation ("androidx.lifecycle:lifecycle-livedata-ktx:2.6.1")
    implementation ("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
    implementation("androidx.annotation:annotation:1.8.2")
}

2. 检查代码类导入

确保所有代码中导入的类都是AndroidX包下的,替换旧support库的导入路径:

  • 错误示例:import android.support.v4.content.ContextCompat
  • 正确示例:import androidx.core.content.ContextCompat

3. 清理重建项目

执行Gradle命令清理缓存,避免旧依赖残留导致的问题:

./gradlew clean
./gradlew assembleDebug

4. 配置BLE扫描权限(适配Android 14)

在AndroidManifest.xml中添加BLE扫描相关权限:

<!-- 声明BLE硬件特性 -->
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />

<!-- Android 12+ 扫描权限 -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<!-- 若无需通过BLE获取位置,添加neverForLocation标记 -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" /> -->

<!-- Android 12+ 蓝牙基础权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />

<!-- Android 11及以下 扫描需位置权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />

5. 实现基础BLE扫描逻辑

使用Android系统自带的BLE API(无需额外依赖),核心示例代码:

// 获取蓝牙管理器
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();

// 检查蓝牙状态
if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled()) {
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}

// 扫描回调处理
ScanCallback scanCallback = new ScanCallback() {
    @Override
    public void onScanResult(int callbackType, ScanResult result) {
        super.onScanResult(callbackType, result);
        BluetoothDevice device = result.getDevice();
        // 处理扫描到的BLE设备信息
    }
};

// 动态申请权限后启动扫描
if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_SCAN) == PackageManager.PERMISSION_GRANTED) {
    bluetoothAdapter.getBluetoothLeScanner().startScan(scanCallback);
}

内容的提问来源于stack exchange,提问作者Creator1982

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:16:19