// private void OnGUI() { // float scaleFactor = BluetoothExamplesTools.UpdateScaleMobile(); // // If initialization was successfull, showing the buttons // if (_initResult) { // // If there is no current Bluetooth connectivity // BluetoothMultiplayerMode currentMode = AndroidBluetoothMultiplayer.GetCurrentMode(); // if (currentMode == BluetoothMultiplayerMode.None) { // if (GUI.Button(new Rect(10, 10, 150, 50), "Create server")) { // // If Bluetooth is enabled, then we can do something right on // if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled()) { // AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); // Network.Disconnect(); // Just to be sure // AndroidBluetoothMultiplayer.StartServer(kPort); // } else { // // Otherwise we have to enable Bluetooth first and wait for callback // _desiredMode = BluetoothMultiplayerMode.Server; // AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); // } // } // // if (GUI.Button(new Rect(170, 10, 150, 50), "Connect to server")) { // // If Bluetooth is enabled, then we can do something right on // if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled()) { // Network.Disconnect(); // Just to be sure // AndroidBluetoothMultiplayer.ShowDeviceList(); // Open device picker dialog // } else { // // Otherwise we have to enable Bluetooth first and wait for callback // _desiredMode = BluetoothMultiplayerMode.Client; // AndroidBluetoothMultiplayer.RequestEnableBluetooth(); // } // } // } else { // // Stop all networking // if (GUI.Button(new Rect(10, 10, 150, 50), currentMode == BluetoothMultiplayerMode.Client ? "Disconnect" : "Stop server")) { // if (Network.peerType != NetworkPeerType.Disconnected) // Network.Disconnect(); // } // } // } else { // // Show a message if initialization failed for some reason // GUI.contentColor = Color.black; // GUI.Label( // new Rect(10, 10, Screen.width / scaleFactor - 10, 50), // "Bluetooth not available. Are you running this on Bluetooth-capable " + // "Android device and AndroidManifest.xml is set up correctly?"); // } // } public void CreateServer() { // If Bluetooth is enabled, then we can do something right on if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled()) { AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); Network.Disconnect(); // Just to be sure AndroidBluetoothMultiplayer.StartServer(kPort); } else { // Otherwise we have to enable Bluetooth first and wait for callback _desiredMode = BluetoothMultiplayerMode.Server; AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); } }
protected override void StartBluetoothHost(System.Action onReadyAction) { #if !UNITY_EDITOR _hostAction = onReadyAction; // If Bluetooth is enabled, immediately start the Bluetooth server if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled()) { this.StopAll(); // Just to be sure //If Android 8.0 and above, do not enable discoverability. Simply enable bluetooth if (this.CheckDiscoverableCompatibility()) { AndroidBluetoothMultiplayer.RequestEnableDiscoverability(_bluetoothNetworkManagerSettings.DefaultBluetoothDiscoverabilityInterval); } else { ConsoleManager.LogMessage("Detected API >= 26! You must enable Bluetooth discoverability manually by opening the bluetooth settings and " + "wait for the client to connect."); } AndroidBluetoothMultiplayer.StartServer((ushort)_networkManager.networkPort); } else { // Otherwise, we have to enable Bluetooth first and wait for callback _desiredMode = BluetoothMultiplayerMode.Server; //If Android 8.0 and above, do not enable discoverability. Simply enable bluetooth if (this.CheckDiscoverableCompatibility()) { AndroidBluetoothMultiplayer.RequestEnableDiscoverability(_bluetoothNetworkManagerSettings.DefaultBluetoothDiscoverabilityInterval); } else { AndroidBluetoothMultiplayer.RequestEnableBluetooth(); ConsoleManager.LogMessage("Detected API >= 26! You must enable Bluetooth discoverability manually by opening the bluetooth settings and " + "wait for the client to connect."); } } #else onReadyAction(); #endif }
private void OnGUI() { float scaleFactor = BluetoothExamplesTools.UpdateScaleMobile(); // If initialization was successfull, showing the buttons if (_initResult) { // If there is no current Bluetooth connectivity BluetoothMultiplayerMode currentMode = AndroidBluetoothMultiplayer.GetCurrentMode(); if (currentMode == BluetoothMultiplayerMode.None) { if (GUI.Button(new Rect(10, 10, 150, 50), "Create server")) { // If Bluetooth is enabled, then we can do something right on if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled()) { AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); Network.Disconnect(); // Just to be sure AndroidBluetoothMultiplayer.StartServer(kPort); } else { // Otherwise we have to enable Bluetooth first and wait for callback _desiredMode = BluetoothMultiplayerMode.Server; AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); } } if (GUI.Button(new Rect(170, 10, 150, 50), "Connect to server")) { // If Bluetooth is enabled, then we can do something right on if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled()) { Network.Disconnect(); // Just to be sure AndroidBluetoothMultiplayer.ShowDeviceList(); // Open device picker dialog } else { // Otherwise we have to enable Bluetooth first and wait for callback _desiredMode = BluetoothMultiplayerMode.Client; AndroidBluetoothMultiplayer.RequestEnableBluetooth(); } } } else { // Stop all networking if (GUI.Button(new Rect(10, 10, 150, 50), currentMode == BluetoothMultiplayerMode.Client ? "Disconnect" : "Stop server")) { if (Network.peerType != NetworkPeerType.Disconnected) { Network.Disconnect(); } AndroidBluetoothMultiplayer.Stop(); } } GUI.contentColor = Color.black; GUI.enabled = currentMode == BluetoothMultiplayerMode.None; _isStressTestMode = GUI.Toggle(new Rect(10, 70, 250, 30), _isStressTestMode, " Stress-test mode (" + kStressModeActors + " actors)"); _isUseInterpolation = GUI.Toggle(new Rect(10, 100, 250, 30), _isUseInterpolation, " Use interpolation (smoothen movement)"); GUI.enabled = true; GUI.contentColor = Color.white; } else { // Show a message if initialization failed for some reason GUI.contentColor = Color.black; GUI.Label( new Rect(10, 10, Screen.width / scaleFactor - 10, 50), "Bluetooth not available. Are you running this on Bluetooth-capable " + "Android device and AndroidManifest.xml is set up correctly?"); } DrawBackButton(scaleFactor); }
private void OnGUI() { bool isBluetoothEnabled = AndroidBluetoothMultiplayer.GetIsBluetoothEnabled(); bool isDiscoverable = false; bool isDiscovering = false; try { isDiscoverable = isBluetoothEnabled && AndroidBluetoothMultiplayer.GetIsDiscoverable(); isDiscovering = isBluetoothEnabled && AndroidBluetoothMultiplayer.GetIsDiscovering(); } catch (BluetoothNotEnabledException) { // This may happen in some rare cases when Bluetooth actually gets disabled // in the middle of C# code execution. In that case we may get a // BluetoothNotEnabledException, but it is safe to ignore it here. } float scaleFactor = BluetoothExamplesTools.UpdateScaleMobile(); // Show the buttons if initialization succeeded if (_initResult) { // Simple text log view GUILayout.Space(190f); BluetoothExamplesTools.TouchScroll(ref _logPosition); _logPosition = GUILayout.BeginScrollView( _logPosition, GUILayout.MaxHeight(Screen.height / scaleFactor - 190f), GUILayout.MinWidth(Screen.width / scaleFactor - 10f), GUILayout.ExpandHeight(false)); GUI.contentColor = Color.black; GUILayout.Label(_log, GUILayout.ExpandHeight(true), GUILayout.MaxWidth(Screen.width / scaleFactor)); GUI.contentColor = Color.white; GUILayout.EndScrollView(); // Generic GUI for calling the methods GUI.enabled = !isBluetoothEnabled; if (GUI.Button(new Rect(10, 10, 140, 50), "Request enable\nBluetooth")) { AndroidBluetoothMultiplayer.RequestEnableBluetooth(); } GUI.enabled = isBluetoothEnabled; if (GUI.Button(new Rect(160, 10, 140, 50), "Disable Bluetooth")) { AndroidBluetoothMultiplayer.DisableBluetooth(); } GUI.enabled = !isBluetoothEnabled || !isDiscoverable; if (GUI.Button(new Rect(310, 10, 150, 50), "Request discoverability")) { AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); } GUI.enabled = isBluetoothEnabled && !isDiscovering; if (GUI.Button(new Rect(10, 70, 140, 50), "Start discovery")) { AndroidBluetoothMultiplayer.StartDiscovery(); } GUI.enabled = isBluetoothEnabled && isDiscovering; if (GUI.Button(new Rect(160, 70, 140, 50), "Stop discovery")) { AndroidBluetoothMultiplayer.StopDiscovery(); } GUI.enabled = isBluetoothEnabled; if (GUI.Button(new Rect(310, 70, 150, 50), "Get current\ndevice")) { Debug.Log("Current device:"); BluetoothDevice device = AndroidBluetoothMultiplayer.GetCurrentDevice(); if (device != null) { // Result can be null on error or if Bluetooth is not available Debug.Log(string.Format("Device: " + BluetoothExamplesTools.FormatDevice(device))); } else { Debug.LogError("Error while retrieving current device"); } } // Just get the device lists and prints them if (GUI.Button(new Rect(10, 130, 140, 50), "Show bonded\ndevice list")) { Debug.Log("Listing known bonded (paired) devices"); BluetoothDevice[] list = AndroidBluetoothMultiplayer.GetBondedDevices(); if (list != null) { // Result can be null on error or if Bluetooth is not available if (list.Length == 0) { Debug.Log("No devices"); } else { foreach (BluetoothDevice device in list) { Debug.Log("Device: " + BluetoothExamplesTools.FormatDevice(device)); } } } else { Debug.LogError("Error while retrieving GetBondedDevices()"); } } if (GUI.Button(new Rect(160, 130, 140, 50), "Show new discovered\ndevice list")) { Debug.Log("Listing devices discovered during last discovery session..."); BluetoothDevice[] list = AndroidBluetoothMultiplayer.GetNewDiscoveredDevices(); if (list != null) { // Result can be null on error or if Bluetooth is not available if (list.Length == 0) { Debug.Log("No devices"); } else { foreach (BluetoothDevice device in list) { Debug.Log("Device: " + BluetoothExamplesTools.FormatDevice(device)); } } } else { Debug.LogError("Error while retrieving GetNewDiscoveredDevices()"); } } if (GUI.Button(new Rect(310, 130, 150, 50), "Show full\ndevice list")) { Debug.Log("Listing all known or discovered devices..."); BluetoothDevice[] list = AndroidBluetoothMultiplayer.GetDiscoveredDevices(); if (list != null) { // Result can be null on error or if Bluetooth is not available if (list.Length == 0) { Debug.Log("No devices"); } else { foreach (BluetoothDevice device in list) { Debug.Log("Device: " + BluetoothExamplesTools.FormatDevice(device)); } } } else { Debug.LogError("Error while retrieving GetDiscoveredDevices()"); } } GUI.enabled = true; // Show a message if initialization failed for some reason } else { GUI.contentColor = Color.black; GUI.Label( new Rect(10, 10, Screen.width / scaleFactor - 10, 50), "Bluetooth not available. Are you running this on Bluetooth-capable " + "Android device and AndroidManifest.xml is set up correctly?"); } DrawBackButton(scaleFactor); }
// Update is called once per frame private void OnGUI() { float scaleFactor = BluetoothExamplesTools.UpdateScaleMobile(); // If initialization was successfull, showing the buttons if (_initResult) { // Show log float logY = 80f; if (_receivedTexture != null) { logY += kTextureSize; } GUILayout.Space(logY); BluetoothExamplesTools.TouchScroll(ref _logPosition); _logPosition = GUILayout.BeginScrollView( _logPosition, GUILayout.MaxHeight(Screen.height / scaleFactor - logY), GUILayout.MinWidth(Screen.width / scaleFactor - 10f / scaleFactor), GUILayout.ExpandHeight(false)); GUI.contentColor = Color.black; GUILayout.Label(_log, GUILayout.ExpandHeight(true), GUILayout.MaxWidth(Screen.width / scaleFactor)); GUI.contentColor = Color.white; GUILayout.EndScrollView(); // If there is no current Bluetooth connectivity BluetoothMultiplayerMode currentMode = AndroidBluetoothMultiplayer.GetCurrentMode(); if (currentMode == BluetoothMultiplayerMode.None) { if (GUI.Button(new Rect(10, 10, 150, 50), "Create server")) { // If Bluetooth is enabled, then we can do something right on if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled()) { AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); Network.Disconnect(); // Just to be sure AndroidBluetoothMultiplayer.StartServer(kPort); } else { // Otherwise we have to enable Bluetooth first and wait for callback _desiredMode = BluetoothMultiplayerMode.Server; AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); } } if (GUI.Button(new Rect(170, 10, 150, 50), "Connect to server")) { // If Bluetooth is enabled, then we can do something right on if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled()) { Network.Disconnect(); // Just to be sure AndroidBluetoothMultiplayer.ShowDeviceList(); // Open device picker dialog } else { // Otherwise we have to enable Bluetooth first and wait for callback _desiredMode = BluetoothMultiplayerMode.Client; AndroidBluetoothMultiplayer.RequestEnableBluetooth(); } } } else { // Stop all networking if (GUI.Button(new Rect(10, 10, 150, 50), currentMode == BluetoothMultiplayerMode.Client ? "Disconnect" : "Stop server")) { if (Network.peerType != NetworkPeerType.Disconnected) { Network.Disconnect(); } } // Display file transfer UI if (Network.peerType != NetworkPeerType.Disconnected && (Network.isClient || Network.connections.Length > 0) && _fileTransfer != null) { GUI.enabled = _fileTransfer.TransferState == FileTransfer.FileTransferState.None; if (GUI.Button(new Rect(Screen.width / scaleFactor - 160, 10, 150, 50), "Send file")) { Color32[] image = GenerateTexture(kTextureSize); byte[] colorBytes = Color32ArrayToByteArray(image); _fileTransfer.TransmitFile(colorBytes); } GUI.enabled = true; // Display file transfer status string status = null; switch (_fileTransfer.TransferState) { case FileTransfer.FileTransferState.Receiving: status = string.Format("Receiving: {0:F1}% ({1} out of {2} bytes)", _transferSize / (float)_transferTotalSize * 100f, _transferSize, _transferTotalSize); break; case FileTransfer.FileTransferState.Transmitting: status = string.Format("Transmitting: {0:F1}% ({1} out of {2} bytes)", _transferSize / (float)_transferTotalSize * 100f, _transferSize, _transferTotalSize); break; case FileTransfer.FileTransferState.None: status = "Idle."; break; } GUI.contentColor = Color.black; GUI.Label(new Rect(10, 65, Screen.width, 20), status); GUI.contentColor = Color.white; if (_receivedTexture != null) { GUI.Label(new Rect(10, 80, kTextureSize, kTextureSize), _receivedTexture); } } } } else { // Show a message if initialization failed for some reason GUI.contentColor = Color.black; GUI.Label( new Rect(10, 10, Screen.width / scaleFactor - 10, 50), "Bluetooth not available. Are you running this on Bluetooth-capable " + "Android device and AndroidManifest.xml is set up correctly?"); } DrawBackButton(scaleFactor); }
public void Init() { app = App.Instance; switch (app.controller.gameMode.mode) { case GameModeController.Mode.multiplayer_bluetooth_client: ServerClientMultiplayerWindow.SetActive(true); ServerClinetInfo.text = "Connecting to server..."; break; case GameModeController.Mode.multiplayer_bluetooth_server: ServerClientMultiplayerWindow.SetActive(true); ServerClinetInfo.text = "Waiting for player..."; break; } homeButton.onClick.AddListener(Home); // Setting the UUID. Must be unique for every application _initResult = AndroidBluetoothMultiplayer.Initialize("8ce255c0-200a-11e0-ac64-0800200c9a66"); // Enabling verbose logging. See log cat! AndroidBluetoothMultiplayer.SetVerboseLog(true); // Registering the event delegates AndroidBluetoothMultiplayer.ListeningStarted += OnBluetoothListeningStarted; AndroidBluetoothMultiplayer.ListeningStopped += OnBluetoothListeningStopped; AndroidBluetoothMultiplayer.AdapterEnabled += OnBluetoothAdapterEnabled; AndroidBluetoothMultiplayer.AdapterEnableFailed += OnBluetoothAdapterEnableFailed; AndroidBluetoothMultiplayer.AdapterDisabled += OnBluetoothAdapterDisabled; AndroidBluetoothMultiplayer.DiscoverabilityEnabled += OnBluetoothDiscoverabilityEnabled; AndroidBluetoothMultiplayer.DiscoverabilityEnableFailed += OnBluetoothDiscoverabilityEnableFailed; AndroidBluetoothMultiplayer.ConnectedToServer += OnBluetoothConnectedToServer; AndroidBluetoothMultiplayer.ConnectionToServerFailed += OnBluetoothConnectionToServerFailed; AndroidBluetoothMultiplayer.DisconnectedFromServer += OnBluetoothDisconnectedFromServer; AndroidBluetoothMultiplayer.ClientConnected += OnBluetoothClientConnected; AndroidBluetoothMultiplayer.ClientDisconnected += OnBluetoothClientDisconnected; AndroidBluetoothMultiplayer.DevicePicked += OnBluetoothDevicePicked; int modeIndex = SaveDataController.Instance.Data.mode; switch (modeIndex) { case 1: this.mode = Mode.single; break; case 2: this.mode = Mode.multiplayer_local; break; case 3: this.mode = Mode.multiplayer_bluetooth_server; break; case 4: this.mode = Mode.multiplayer_bluetooth_client; break; } float scaleFactor = BluetoothExamplesTools.UpdateScaleMobile(); // If initialization was successfull, showing the buttons if (_initResult) { // If there is no current Bluetooth connectivity BluetoothMultiplayerMode currentMode = AndroidBluetoothMultiplayer.GetCurrentMode(); if (currentMode == BluetoothMultiplayerMode.None) { if (mode == Mode.multiplayer_bluetooth_server) { // If Bluetooth is enabled, then we can do something right on if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled()) { AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); Network.Disconnect(); // Just to be sure AndroidBluetoothMultiplayer.StartServer(kPort); } else { // Otherwise we have to enable Bluetooth first and wait for callback _desiredMode = BluetoothMultiplayerMode.Server; AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120); } Debug.Log("Server"); } if (mode == Mode.multiplayer_bluetooth_client) { // If Bluetooth is enabled, then we can do something right on if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled()) { Network.Disconnect(); // Just to be sure AndroidBluetoothMultiplayer.ShowDeviceList(); // Open device picker dialog } else { // Otherwise we have to enable Bluetooth first and wait for callback _desiredMode = BluetoothMultiplayerMode.Client; AndroidBluetoothMultiplayer.RequestEnableBluetooth(); } Debug.Log("Client"); } } else { Debug.Log("Bluetooth activated before Init"); } /*if (currentMode == BluetoothMultiplayerMode.None) * { * OnBackToMenu(); * } * else * { * started = true; * }*/ started = true; //SetupGame(); } else { // Show a message if initialization failed for some reason Debug.Log("Bluetooth not available. Are you running this on Bluetooth-capable " + "Android device and AndroidManifest.xml is set up correctly?"); } }