【发布时间】: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