Jsem čelí velmi zvláštní, tři-cesta bolesti hlavy. Já používám Unity Engine a BrainLink zařízení Bluetooth jako zdroj vstupu. Jsem se připojit k BrainLink zařízení automaticky prostřednictvím kódu pomocí knihovny s názvem Neurosky.ThinkGear a tak daleko se tito dva pracují dobře dohromady, ale to je za předpokladu, že zařízení bylo spárované ručně pomocí Bluetooth A Jiných Zařízení okna.
Nyní jsem byl požádán, abych také PÁR zařízení automaticky, a to je místo, kde jsem narazil na překážku. Protože pomocí Unity Engine nemůžu používat windows runtime věci (jako Windows.Výčtu.Zařízení), rozhodl jsem se použít InTheHand 32Feet řešení pro Bluetooth zařízení a zdá se, že druh práce. Zařízení se zobrazí, jak je uvedeno v Bluetooth A Jiných Zařízení, pokud to nebyl již a je uveden jako Spárované stejně. Problém je, že při spárování přes kód, a ne ručně, knihovna, která zpracovává připojení k zařízení (uvedené Neurosky.ThinkGear) nemůže připojit k zařízení. To se připojí pouze pokud je zařízení odstraněno a znovu spárovat přes Bluetooth & Oherová Zařízení okna.
Kód jsem v současné době testování je následující:
private void Start()
{
Debug.Log("Operation Start");
//btClient is a class field
btClient = new BluetoothClient();
//Search for existing paired devices that contain "brainlink" in their name
BluetoothDeviceInfo btDevice = CheckExistingPairedDevices();
if (btDevice == null)
{
Debug.Log("No paired device found, trying to discover");
//Try to discover devices in range with "brainlink" in their name
btDevice = TryDiscoverDevice();
}
if(btDevice!= null)
{
Debug.Log("Found Device " + btDevice.DeviceName+", checking for pairing");
bool paired = AttemptPair(btDevice);
Debug.Log("Pair Status: " + paired);
}
else
{
Debug.Log("Could not discover device");
}
CloseClient();
}
Je to metoda, která zpracovává párování. V okamžiku, nikdy jsem předat hodnotu na pin , ale je to tam jen v případě, že potřebuji podporu dalších zařízení v budoucnu.
private bool AttemptPair(BluetoothDeviceInfo btDevice, string pin = null)
{
//Check if this device has been paired before
if (btDevice.Authenticated)
return true;
bool result = BluetoothSecurity.PairRequest(btDevice.DeviceAddress, pin);
btDevice.Refresh();
return result;
}