【问题标题】:How to turn on bluetooth如何开启蓝牙
【发布时间】:2018-04-15 15:02:01
【问题描述】:

我正在尝试通过android插件在unity项目中进行蓝牙通信,一开始我想打开蓝牙。

java代码是这样的

package com.example.unityplugin;

import android.bluetooth.BluetoothAdapter;

public class PluginClass {
public static String testMessage(){
    return "I AM WORKING";
}

public static String TurnOnBluetooth(){
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (bluetoothAdapter != null) {
        if (!bluetoothAdapter.isEnabled()) {
            bluetoothAdapter.enable();
            return "BLUETOOTH ON";
        } else {
            return "WAS ON";
        }
    }
    return "no bluetooth adapter";
}

}

在 Unity 中就这么简单

void Start () {
    textMEsh = GetComponent<TextMesh>();
    var plugin = new AndroidJavaClass("com.example.unityplugin.PluginClass");
    textMEsh.text = plugin.CallStatic<string>("testMessage");
    textMEsh.text = plugin.CallStatic<string>("TurnOnBluetooth");
}

所以应用程序中显示的文本在第一个方法“testMessage”之后更改为“I AM WORKING”,但是没有任何反应,我真的不明白为什么。蓝牙未打开,我从日志中看到以下错误:

I/Unity:AndroidJavaException:java.lang.SecurityException:需要 BLUETOOTH ADMIN 权限:用户 10069 和当前进程都没有 android.permission.BLUETOOTH_ADMIN.

我应该如何在 Unity 中正确设置该权限?

【问题讨论】:

  • “然后什么都没有发生,我真的不明白为什么。”应该发生什么?顺便说一句,最好让你的 TurnOnBluetooth 函数返回 bool 而不是 string,除非你打算让它在未来返回其他东西。
  • 我的统一应用程序正在根据 java 字符串返回更改手机屏幕上显示的文本。所以调用 testMessage() 将其更改为“我正在工作”但是 TurnOnBluetooth() 没有改变任何东西,所以那里可能有一些错误。
  • Check 如果您这样做时有日志。可能是有错误的日志
  • 好的,所以有这个异常 I/Unity:AndroidJavaException:java.lang.SecurityException:需要 BLUETOOTH ADMIN 权限:用户 10069 和当前进程都没有 android.permission.BLUETOOTH_ADMIN。但我找不到我应该如何正确地统一设置该权限?
  • 我原以为这是问题所在,但在发布答案之前等待您确认。检查我的答案。

标签: c# android unity3d plugins bluetooth


【解决方案1】:

这是一个权限错误。您需要在 Unity 中添加蓝牙权限。

1.转到&lt;UnityInstallationDirecory&gt;\Editor\Data\PlaybackEngines\AndroidPlayer\Apk,将AndroidManifest.xml 文件复制到您的&lt;ProjectName&gt;Assets\Plugins\Android。

如果&lt;ProjectName&gt;Assets\Plugins\Android 尚不存在,请创建它。 文件夹的拼写区分大小写,必须拼写正确。

2。打开从&lt;ProjectName&gt;Assets\Plugins\Android 复制的清单文件并添加您的清单。

为其添加以下权限:

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

3.保存AndroidManifest修改,构建并运行。

Unity 现在将在最终构建中包含蓝牙权限。

【讨论】:

  • 如果您不知道将权限放置在哪个标签中,请参阅this github页面。它显示了完整权限应该是什么样子。
  • 非常感谢。它有效,我也学会了如何调试。
  • 在制作 Unity Android 插件时,知道如何调试非常重要。很高兴我能够提供帮助并快乐编码!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 2011-08-11
  • 2020-09-05
相关资源
最近更新 更多