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 JNI api 方法 c++ 蓝牙 NDK 使用 设计      更新时间:2023-10-16

我需要设计的Android应用程序是有c++源代码/库与蓝牙api/方法,使用JNI,NDK。我对蓝牙api了解不多。

先决条件

  1. 用c++编写的现有Windows,Linux,Mac OS软件代码。这是连接和控制蓝牙设备(扬声器等)的软件(桌面)

  2. 需要使用这个现有的c++源代码或可以使用它作为Android应用程序的库。

查询:

  1. 我应该使用MVC或MVP架构?
  2. 如何链接c++蓝牙api与Android蓝牙api ?
  3. 如何在Android和c++代码之间进行双向通信,反之亦然。如何在c++中使用回调和注册事件?注:目前我没有接触到实际存在的Windows, MacOS, Linux软件代码,所以不知道目前的通信结构。如果有人知道,请解释)Android蓝牙api是否足够或扩展支持开发人员使用本地代码(c++)?
    我个人会选择MVC。在我看来,它会更好地配合功能。
  1. 绝对没有必要链接本地和android BT api。因为两者都有相同的目的,所以我用哪一个取决于你。android BT堆栈有点不稳定,但已经具备了所需的所有实现。除非本机代码将提供某种增值或不同的功能,否则重新发明轮子是没有意义的。
  2. 您可以使用相应c++库的SO文件,并使用JNI访问它们。来回沟通不是问题。为了实现回调,您将找到代码片段。例如,如何在android代码和本机代码之间创建回调?
  3. 如前所述,如果你的本机库只做android api所做的事情,那么尽可能避免使用它。

答案

  1. 架构足够灵活,可以适应任何需求,完全由您自己决定使用哪一个。
  2. 基本上,如果你有c++的东西,你必须写一个JNI包装器。您可以将它捆绑在一个jar中,并将其导入到您的项目中,并且可以使用公开的api
  3. 使用它。学习JNI及其用法。
  4. Android引入了蓝牙低功耗来使用蓝牙技术与远程设备通信。它们是否满足您的要求完全取决于您的要求。