Android NDK,JNI,蓝牙:使用JNI设计Android应用程序,该应用程序具有带有蓝牙api /方法的c++
Android NDK,JNI,Bluetooth : Designing the Android Application which is having C++ source code/library with Bluetooth APIs/methods ,using JNI
我需要设计的Android应用程序是有c++源代码/库与蓝牙api/方法,使用JNI,NDK。我对蓝牙api了解不多。
先决条件
-
用c++编写的现有Windows,Linux,Mac OS软件代码。这是连接和控制蓝牙设备(扬声器等)的软件(桌面)
-
需要使用这个现有的c++源代码或可以使用它作为Android应用程序的库。
查询:
- 我应该使用MVC或MVP架构?
- 如何链接c++蓝牙api与Android蓝牙api ? 如何在Android和c++代码之间进行双向通信,反之亦然。如何在c++中使用回调和注册事件?注:目前我没有接触到实际存在的Windows, MacOS, Linux软件代码,所以不知道目前的通信结构。如果有人知道,请解释)Android蓝牙api是否足够或扩展支持开发人员使用本地代码(c++)?
- 我个人会选择MVC。在我看来,它会更好地配合功能。
- 绝对没有必要链接本地和android BT api。因为两者都有相同的目的,所以我用哪一个取决于你。android BT堆栈有点不稳定,但已经具备了所需的所有实现。除非本机代码将提供某种增值或不同的功能,否则重新发明轮子是没有意义的。
- 您可以使用相应c++库的SO文件,并使用JNI访问它们。来回沟通不是问题。为了实现回调,您将找到代码片段。例如,如何在android代码和本机代码之间创建回调?
- 如前所述,如果你的本机库只做android api所做的事情,那么尽可能避免使用它。
答案
- 架构足够灵活,可以适应任何需求,完全由您自己决定使用哪一个。
- 基本上,如果你有c++的东西,你必须写一个JNI包装器。您可以将它捆绑在一个jar中,并将其导入到您的项目中,并且可以使用公开的api 使用它。学习JNI及其用法。
- Android引入了蓝牙低功耗来使用蓝牙技术与远程设备通信。它们是否满足您的要求完全取决于您的要求。
相关文章:
- 来自 Android 应用程序内部的 boost 类型的 boost::wrapexcept<boost::system::system_error> 的未捕获异常
- 在 Flutter 应用程序中使用 Android NDK 中的 AssetManager 类
- 如何在Android设备上解析Qt应用程序的ClassNotFoundEception?
- Windows 和 Android 应用程序是否需要 SSL?
- Android因为权限问题而杀死Qt应用程序
- Android (ART) 崩溃并显示错误 JNI 在应用程序中检测到错误:jstring 是无效的本地引用
- 使用C++创建UDP服务器以嵌入跨平台iOS和Android应用程序中
- 使用 JNI 从 Android 应用程序向C++发送字符串
- 在构建 Android 应用程序时禁用 CMake 目标
- lambda回调中Android Cocos2D-X应用程序上的SEG故障
- 如何在Qt Android应用程序上禁用屏幕保护程序
- 基于 Qt、Qml 和 C++ 的应用程序移植到 Android
- 将C 应用程序(无接口,仅算法)移植到Android
- 如何在Cocos2d Android应用程序中获得呼叫/挂起事件
- 如何在 Unity Android 应用程序中的 OpenCV 中使用 ARCore 相机图像
- Android OpenCV 应用程序的内存问题
- SIGSEGV 使用 ARCore 和原生 android 应用程序
- 呼叫功能时JNI C Android应用程序崩溃
- 运行c#代码从c++应用程序(Android NDK)免费
- 在Visual Studio中创建新的本机应用程序(Android)出错