安卓蓝牙低版本向高版本移植的问题

项目需要,在早期安卓4.0版本之前开发蓝牙应用,需加载libbluetooth.so,但4.4版本及以上已经没有这个库了
我的问题是,安卓4.0版本之前用bluez协议栈,其中是不是有这个libbluetooth.so
但是之后安卓版本用bluedroid,是不是没有这个so了,替代的是libbluetooth.default.so吗
另外问题,libbluetooth.so中的接口是不是和bluedroid中接口完全不一样,如果做移植是不是需要全部重写?有简单的办法来处理吗?

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

安卓版本兼容,低版本转高版本

为什么我用eclipse在低版本的安卓虚拟机能运行,好版本就运行不了了,求大神解答

android9.0修改系统源码之实现蓝牙自动配对

android9.0修改系统源码之实现蓝牙自动配对,不能出现弹框!

Android 查找和连接蓝牙功能开发问题

在开发蓝牙功能的时候在网上下了一个demo,demo代码移植在我的一个测试项目上是完全可以查找和连接的,但是吧代码移植到我的正式工程的时候总是不行不知道怎么回事(报错信息在网上也不好找到解决原因),这里有这方面熟悉的朋友帮忙看下,如果如推荐的demo可以参考更为感谢 下面上代码和报错信息 查找蓝牙方法 ``` public void searchBlueToothDevice() { //Log.i(TAG, "searchBlueToothDevice(MainActivity.java:112)--->> " + "searchBlueToothDevice"); pdSearch = ProgressDialog.show(StockOutScan.this, "", "连接中", true, true); pdSearch.setCanceledOnTouchOutside(false); pdSearch.show(); mBluetoothList = new ArrayList<BluetoothBean>(); // 检查设备是否支持蓝牙 Bluetoothadapter = BluetoothAdapter.getDefaultAdapter(); if (Bluetoothadapter == null) { Toast.makeText(this, "当前设备不支持蓝牙", Toast.LENGTH_SHORT).show(); return; } // 如果蓝牙已经关闭就打开蓝牙 if (!Bluetoothadapter.isEnabled()) { Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); startActivity(intent); return; } // // 获取已配对的蓝牙设备 // Set<BluetoothDevice> devices = adapter.getBondedDevices(); // // 遍历 // int count = 0; // for (BluetoothDevice pairedDevice : devices) { // Log.i(TAG, "searchBlueToothDevice(MainActivity.java:137)--->> " + pairedDevice.getName()); // if (pairedDevice.getName() == null) { // return; // } else if (pairedDevice.getName().startsWith("Printer_29D0")) { // count++; // deviceAddress = pairedDevice.getAddress(); // mBluetoothDevice = adapter.getRemoteDevice(deviceAddress); // connect(deviceAddress, mBluetoothDevice); // break; // } // } if (Bluetoothadapter.isEnabled()) { //开始搜索 Bluetoothadapter.startDiscovery(); // 设置广播信息过滤 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(BluetoothDevice.ACTION_FOUND); intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); // 注册广播接收器,接收并处理搜索结果 receiver = new MyBroadcastReceiver(); registerReceiver(receiver, intentFilter); } } ``` 广播代码 ``` public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); //找到设备,有可能重复搜索同一设备,可在结束后做去重操作 if (BluetoothDevice.ACTION_FOUND.equals(action)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (device == null) { return; } if (device.getName() == null) { return; } BluetoothBean bluetoothBean = new BluetoothBean(); bluetoothBean.mBluetoothName = device.getName(); bluetoothBean.mBluetoothAddress = device.getAddress(); bluetoothBean.mBluetoothDevice = Bluetoothadapter.getRemoteDevice(bluetoothBean.mBluetoothAddress); mBluetoothList.add(bluetoothBean); //Log.i(TAG, "onReceive(MainActivity.java:184)--->> " + device.getName()); //Log.i(TAG, "onReceive(MainActivity.java:185)--->> " + mBluetoothList.size()); // if (device.getName().startsWith("Printer_29D0")) { // //取消搜索 // adapter.cancelDiscovery(); // deviceAddress = device.getAddress(); // mBluetoothDevice = adapter.getRemoteDevice(deviceAddress); // connectState = device.getBondState(); // switch (connectState) { // // 未配对 // case BluetoothDevice.BOND_NONE: // // 配对 // try { // Method createBondMethod = mBluetoothDevice.getClass().getMethod("createBond"); // createBondMethod.invoke(mBluetoothDevice); // } catch (Exception e) { // e.printStackTrace(); // } // break; // // 已配对 // case BluetoothDevice.BOND_BONDED: // if (device.getName().startsWith("Printer_29D0")) { // connect(deviceAddress, mBluetoothDevice); // } // break; // } // } } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { //Log.i(TAG, "onReceive(MainActivity.java:213)--->> " + "搜索完成"); pdSearch.dismiss(); if (0 == mBluetoothList.size()) Toast.makeText(StockOutScan.this, "搜索不到蓝牙设备", Toast.LENGTH_SHORT).show(); else { //去重HashSet add会返回一个boolean值,插入的值已经存在就会返回false 所以true就是不重复的 HashSet<BluetoothBean> set = new HashSet<BluetoothBean>(); mBluetoothList2 = new ArrayList<BluetoothBean>(); for (BluetoothBean bean : mBluetoothList) { boolean add = set.add(bean); if (add) { mBluetoothList2.add(bean); } } showBluetoothPop(mBluetoothList2); } unregisterReceiver(receiver); } } } ``` 弹框显示搜索到的蓝牙 ``` //弹框显示蓝牙设备 private void showBluetoothPop(final List<BluetoothBean> bluetoothList) { bluetoothtitle = (TextView) dialogView.findViewById(R.id.bluetooth_btitle); bluetoothlistview = (ListView) findViewById(R.id.bluetooth_listview); if (myBluetoothAdapter == null) { myBluetoothAdapter = new MyBluetoothAdapter( StockOutScan.this,bluetoothList); } bluetoothlistview.setAdapter(myBluetoothAdapter); // 弹出对话框 bluetoothtitle.setText("选择连接蓝牙"); // 根据listview高度刷新弹框高度 refreshHeight(bluetoothlistview); } ``` 报错信息在注册广播方法哪一步 ![图片说明](https://img-ask.csdn.net/upload/201802/08/1518055190_239320.jpg)

低版本的c++程序移植到vs2010上

#if _WIN32_WINNT < 0x0403 #error This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended. #endif

libjpeg移植到android下的问题

我下载了一个人家编辑好的libjpeg,但是不知道为什么只能在MainActivity里能运行,在其他class运行报错?

FFMPEGy移植到Android的问题

请问我想将FFmpeg移植到Android上面,然后通过将移植后的ffmpeg可执行文件push到Android目录下去执行,该怎么做呢? 晚上好多方法试了都不好使,谢谢了

oracle sql developer数据移植问题

我是初学者,想请教各位有关是oracle sql developer数据移植问题。 现在按网上的步骤操作后,无论是联机还是脱机移植数据,最后的结果都是: 在移植窗格(即左下角窗格)里面能正确显示表结构,但没有数据。![图片说明](https://img-ask.csdn.net/upload/201511/06/1446800302_846693.png) 而在连接的那个空格里,oracle数据库却始终没有从mysql导入任何的表

c++代码算法能否直接移植到安卓程序中?

大神们好,我想问一下,老师有现成的c++图像处理算法,我可不可以直接移植到我的app中(andriod studio),有什么推荐的书或者博客么? 老师的代码是纯c++的,能不能直接移植?还是说我必须把代码重新用java写?谢谢各位

android 系统代码移植

downloadprovider解析浏览器下载传送过来的uri错误,但uri能正确用log打印出来

开发环境与目标环境GLIBC版本不兼容,如何在不升级的情况下解决linux程序移植问题?

linux下c++开发,开发机的gcc版本高, 我想把编译出来的程序,放到公司预发布环境去运行, 执行抛错 ./imaPro: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by ./imaPro) ./imaPro: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./imaPro) imaPro 是我的可执行程序,使用cmake编译,静态链接了libc.a;libstdc++.a 基本库。 这种方法为什么没有奏效呢?

如何给安卓机移植Linux发行版

rt,仍需要Android的recovery吗?如何制作镜像?烧写?一点思路都没有,希望大神点拨。

求助大神 Linux下蓝牙搜索不到其他蓝牙设备的问题

在Linux下测试蓝牙,用的2.6.28内核,蓝牙模块是三星的swb-b23,其实内部是bcm4329模块,用的串口方式进行通信。在配置好内核驱动后,上层根据网上的教程交叉编译了bluez-lib、bluez-utils,然后将必要的文件移植到板子对应的目录下,现在hciattch也能连接上,hciconfig后也能收到本地蓝牙的地址,但就是搜索不到外部蓝牙设备同时外部设备也搜不到它,电路以前有同事做过应该没有问题,因为他是在Android上用的,参考意义有限。程序上也暂时没有发现问题,感觉好奇怪,觉得好像是自己的命令没有用正确。下面是蓝牙模块上电后的命名执行,有哪位大神看看帮帮忙啦,搞了好久了没有进展啊 ./hciattach -s 115200 /dev/ttySAC1 any 连接到对应的串口(用的串口1,波特率115200) ./hciconfig hci0 up 打开设备 ./hciconfig 查看参数 ./hciconfig hci0 iscan 配置蓝牙可被搜索到 ./hcitool scan 搜索蓝牙设备(搜不到啊!)

安卓5.1系统ROM移植?

本人刚刚接触ROM移植,在安卓5.0以下的系统移植上小有成就,苦于没有资料,在安卓5.1ROM移植上遇到了问题,就是解包dat在替换各种文件后不知道怎么下手,还有脚本、内核移植等问题还未解决,希望各位大神不吝赐教,我在这里先谢过大神们了,祝各位大神在以后的开发路上一飞冲天!!!

Java程序能移植修改为安卓app吗?

我们写了一个Java的小软件,希望能改编为安卓的app,但不知道能不能做,怎么做。如果能够移植,修改会很多吗?

AP6212的蓝牙模块是BLE模块(单模)还是传统+BLE双模(支持BLE)?

AP6212的蓝牙模块是BLE模块(单模)还是传统+BLE双模(支持BLE)? 单模能向双模发送数据,但双模不能像单模发送数据对么?

Cocos移植的Android.mk问题

在执行 build__native.py 时遇到如下错误: ![图片说明](https://img-ask.csdn.net/upload/201504/22/1429709340_13278.png) 下面是我的Android.mk文件: ![图片说明](https://img-ask.csdn.net/upload/201504/22/1429709603_332643.png) 至于cocos2d项目就是刚创建的hellogame,然后引入了下面包? ![图片说明](https://img-ask.csdn.net/upload/201504/22/1429709746_740869.png)

如何将一个基于Windows环境下开发的Qt软件移植到Android上?

是直接对源代码中引用的Windows原生API进行替换吗 比如说windows.h mmsystem.h之类的要怎么处理

Android 移植LTC2943的问题

驱动已经可以读到正常的寄存器值。 但是launcher的电池显示依然没有作用(充电时没有充电状态变化等。) 请问这部分需要做如何对接呢? 刚才重新看了一下,从驱动层读到寄存器的值,这个是不是需要按百分比转一下才能扔给上层?

jpos移植进android studio时遇到无法解决的报错

上级要求要把jpos移植进android studio里,用的是jpos1.7.0版本,jpos在android studio里需要用到jre1.8.0里面的库,编译后出现这样报错,用网上能找到的办法都不行 ![图片说明](https://img-ask.csdn.net/upload/201708/17/1502940723_561779.png) 比如下面这些方法,编译后依旧报错 ![图片说明](https://img-ask.csdn.net/upload/201708/17/1502940967_197204.png) ![图片说明](https://img-ask.csdn.net/upload/201708/17/1502941333_41557.png)

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# 解析cad c#数字格式化万 c#int转byte c#格式化日期 c# wpf 表格 c# 实现ad域验证登录 c#心跳包机制 c#使用fmod.dll c#dll vb 调用 c# outlook
立即提问
相关内容推荐