Bluecove:以编程方式重新启动蓝牙堆栈

2024-03-27

我正在尝试关闭蓝牙服务,但 Bluecove 在连接关闭方法上有错误(https://code.google.com/p/bluecove/issues/detail?id=90 https://code.google.com/p/bluecove/issues/detail?id=90),我正在尝试采取一些解决方法来重新启动服务。我认为重新启动蓝牙堆栈可以解决我的问题。我可以通过编程来完成吗?我正在使用微软蓝牙堆栈。


问题就这样解决了。

我重新启动应用程序,但首先手动关闭 bluecove。

BlueCoveImpl.shutdown();

如果我只重新启动应用程序,bluecove 会关闭,但无法在启动期间初始化蓝牙堆栈。重启方法如下:

public static void restartApplication(Runnable runBeforeRestart)
        throws IOException
{
    try
    {
        // java binary
        String java = System.getProperty("java.home") + "/bin/java";
        // vm arguments
        List<String> vmArguments = ManagementFactory.getRuntimeMXBean()
                .getInputArguments();
        StringBuffer vmArgsOneLine = new StringBuffer();
        for (String arg : vmArguments)
        {
            // if it's the agent argument : we ignore it otherwise the
            // address of the old application and the new one will be in
            // conflict
            if (!arg.contains("-agentlib"))
            {
                vmArgsOneLine.append(arg);
                vmArgsOneLine.append(" ");
            }
        }
        // init the command to execute, add the vm args
        final StringBuffer cmd = new StringBuffer("\"" + java + "\" "
                + vmArgsOneLine);

        // program main and program arguments
        String[] mainCommand = System.getProperty(SUN_JAVA_COMMAND).split(
                " ");
        // program main is a jar
        if (mainCommand[0].endsWith(".jar"))
        {
            // if it's a jar, add -jar mainJar
            cmd.append("-jar " + new File(mainCommand[0]).getPath());
        }
        else
        {
            // else it's a .class, add the classpath and mainClass
            cmd.append("-cp \"" + System.getProperty("java.class.path")
                    + "\" " + mainCommand[0]);
        }
        // finally add program arguments
        for (int i = 1; i < mainCommand.length; i++)
        {
            cmd.append(" ");
            cmd.append(mainCommand[i]);
        }

        // execute the command in a shutdown hook, to be sure that all the
        // resources have been disposed before restarting the application
        Runtime.getRuntime().addShutdownHook(new Thread() {
            @Override
            public void run()
            {
                try
                {
                    Runtime.getRuntime().exec(cmd.toString());
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        });
        // execute some custom code before restarting
        if (runBeforeRestart != null)
        {
            runBeforeRestart.run();
        }
        // at first shut down BlueCove manually
        BlueCoveImpl.shutdown();

        System.exit(0);
    }
    catch (Exception e)
    {
        // something went wrong
        throw new IOException(
                "Error while trying to restart the application", e);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bluecove:以编程方式重新启动蓝牙堆栈 的相关文章

  • Android 和 iOS 如何扫描蓝牙信标而不出现电池问题?

    如果我想在 Android 或 IOS 中开发自己的 iBeacon 服务 它必须实用 这意味着客户可以使用我的服务而不会出现电池短缺的情况 我认为即使 iBeacon 技术基于蓝牙低功耗 它仍然可能缺乏电池 这是因为应用程序必须始终运行才
  • 使用 Xamarin Android 连接到蓝牙扫描仪

    我正在开发一个项目 需要连接到蓝牙扫描仪 摩托罗拉 CS3070 我需要捕获输入流并使用它用扫描的条形码填充列表框 我尝试创建一个安全套接字并连接到它 但套接字无法连接 设备已打开并已配对 它充当物理键盘 如果光标位于可编辑字段中 则会填充
  • 如何使 HSQL 驱动程序正常工作?

    我目前正在学习 Java 中的一些数据库技巧 我发现我正在读的这本好书 在某些时候 它鼓励我尝试与以下类进行手动数据库连接 import java sql DriverManager import java sql Connection i
  • std::stack 是否公开迭代器?

    是否std stack在 C STL 中公开底层容器的任何迭代器 还是应该直接使用该容器 根据堆栈的定义 堆栈没有迭代器 如果您需要带有迭代器的堆栈 则需要自己在其他容器 std list std vector 等 之上实现它 堆栈文档在这
  • 通过控制台应用程序连接到 Oracle,不能通过 Web 服务连接

    我无法通过 asmx Web 服务连接到 Oracle 模式 而可以通过控制台应用程序 x86 连接到 Oracle 模式 代码 var conn new OracleConnection Data Source xe User ID my
  • 扫描 iPhone 范围内的蓝牙设备需要多长时间?

    我知道 iPhone 蓝牙功能要到 3 0 才能通过 SDK 访问 但是需要多长时间才能找到该区域的设备 它取决于该区域的设备数量吗 如果范围内有大约 5 个设备 扫描发现所有设备是否需要花费 30 秒的时间 我知道有很多未知因素 但我试图
  • 如何估算 BLE 模块的功耗?

    我正在为带有 BLE 模块的设备编写一个 iOS 应用程序 该模块在连接时一致地通告几个字节的数据 我们正在尝试估算 BLE 模块的功耗 以便估算设备的电池寿命 我已经在 SO 和 Google 上搜索过 寻找合适的方法来估计这一点 但我一
  • 连接关闭且应用程序终止后,BLE 堆栈反复重新连接到外设

    我有一个应用程序 它打开与 BLE 设备的短暂连接 执行一些特征读取和写入 然后断开并关闭连接 应用程序使用 autoReconnect false 并且设备未配对或绑定 我看到 Android 的一些非常奇怪的行为 它似乎反复且意外地重新
  • 如何在 Android 中强制蓝牙 LE“正常工作”配对

    我有一个运行 GATT 服务器的嵌入式系统 我尝试通过 Android 连接该服务器 任务很简单 连接到 GATT 服务器 导航特征并验证读 写功能 问题是当我尝试连接 Android 应用程序时 它尝试与 Passkey 而不是 Just
  • 检测蓝牙“通话”按钮按下情况

    我有一个蓝牙耳机 可以与我的手机通信 它有一个大的 通话 按钮 可以接听 结束通话 我正在尝试制作一个应用程序 该应用程序能够在按下通话按钮时进行拦截 我尝试过使用意图过滤器
  • 使用蓝牙调用应用程序

    我们可以使用蓝牙从一个 Android 设备中调用另一台 Android 设备中的应用程序吗 如果可以的话流程是什么 不 您不能从一个 Android 设备调用另一个应用程序 除非两个应用程序都使用蓝牙权限并进行配置
  • Android/iOS 上的相机远程快门如何工作?

    我最近在 Android iOS 上遇到了一个使用蓝牙的内置相机应用程序的远程快门 这是我找到的产品的示例链接 Link http www youtube com watch v cyVG76HDvh4 不是来打广告的 只是简单了解背后的技
  • 不要在异常堆栈中显示 Python raise-line

    当我在 Python 库中引发自己的异常时 异常堆栈将引发行本身显示为堆栈的最后一项 这显然不是一个错误 在概念上是正确的 但是当您在外部使用代码 例如作为模块 时 它会将重点放在对调试无用的东西上 有没有办法避免这种情况并强制 Pytho
  • AWS ECS 重启策略

    我检查了在 ECS 集群中运行的一个 docker 容器 它的重启策略为空白 HostConfig RestartPolicy Name 我不确定 ECS 在发生故障时会做什么 但我想将策略更改为在实例中运行的 cmd 失败时重新启动容器实
  • Elasticsearch:如何查询连接数?

    如何询问我的 Elasticsearch 服务器现在有多少个连接 这与插座数量相同吗 我也不知道如何获得这些数字 这与客户端的数量不同 对吧 因为每个客户端可能打开多个连接 找不到任何相关信息 但我确实发现您可以在 Elasticsearc
  • 我该怎么做才能完全关闭与mcu的tcpClient连接?

    我现在正在研究与 ESP32 中运行的 tcp 服务器的 tcp 套接字连接 通信工作正常 但我无法关闭连接 在搜索关闭 重置 tcpClient 上的解决方案后 似乎关闭 tcpClient 的正确方法应该是 tcpClient GetS
  • MySQL 连接丢失:系统错误:110

    我正在尝试通过专用服务器上的 localhost 连接到 mySQL 服务器 但我不断收到错误 Lost connection to MySQL server at reading initial communication packet
  • 将字符写入 Java 套接字时 fsockopen 10053 错误

    Right 我正在尝试用 PHP 编写一个小脚本 将游戏中的聊天包发送到 Minecraft Deliberately low timeout mc fsockopen localhost 25565 errno err 3 现在 如果连接
  • 如何检查 uiviewcontroller 是否存在于 uinavigationcontroller 堆栈中

    我有一个UINavigationController 我必须从 a 中弹出一个视图UINavigationController并将其替换为另一个视图 我们如何才能搜索到一个UIViewController对象并将其替换为另一个 当我打印时
  • MySQL 连接不工作:2002 没有这样的文件或目录

    我正在尝试设置 WordPress 我已经运行了 Apache 和 MySQL 并且帐户和数据库都已设置 我尝试建立一个简单的连接 我总是得到这个 错误 2002 没有这样的文件或 目录 它正在谈论什么文件或目录 我使用的是 OS X Sn

随机推荐