Found under: Settings > Connect devices
Connect devices using Google Nearby
Connect several Android devices to allow remote control of OpenSongApp (requires Google Play Services). Devices set up as hosts can send song information to all connected clients. This is useful to have one device controlling multiple devices on stage.
When devices try to establish connections with each other, they try to display helpful device names. Click on this to edit it to something sensible (e.g. the person's name or the device). To avoid confusion, each device being connected should have a different name. By default if no name has been entered, the app will try to get the device's Bluetooth name or failing that, the device model name.
Google Nearby is not required and is switched off. This is the default setting when the app starts (and closes). When you change from host/client to off, you will close all current connections to devices.
Act as Host
When a device is set to act as the host, it sends information to all connected devices whenever certain actions occur such as a new song is loaded, a song section is selected (in Stage/Presenter mode) or autoscrolling has started/stopped.
Normally only one device is set as a host, however, it is possible to have multiple devices acting as hosts. Hosts ignore information sent from other devices acting as hosts.
Act as Client
When a device is set to act as the client, it listens to all incoming information that has been sent by a host such as a new song is loaded, a song section is selected (in Stage/Presenter mode) or autoscrolling has started/stopped. To receive this information, a client device should either be connected to a device acting as a host, or connected to another client that is connected to a host.
As a client, you only need to connect to devices that will be acting as a host. You do not need to connect to other client devices (unless these devices may later change to hosts).
When direct connections to other devices have been made, the names of these devices are listed here. You can only directly communicate with these devices, however, when in cluster or star mode, you can also send messages to or receive messages from devices that are connected with your connected devices.
If you switch between apps during a performance, Android often closes background apps to recover memory. If this happens, you will lose your connections too (you will know this as when you open the app again it will rebuild your song index as it has started fresh).
If you want to ensure OpenSongApp runs in the background (when switching between apps), you can allow it unrestricted battery usage. This is normally found under the App settings or Battery optimisation settings on your Android device. If you allow this, remember to properly close the app when you have finished rather than just switching to a different app. If memory is low on your device, Android may still close the app in the background.
When you wish to make a connection to a new device, you must first decide on setting yourself up as a host or client. This makes no difference in the type of connection made. If you want to let other devices search for you, click on 'Advertise'. For other devices to find you, they have to click on the 'Discover' button. Sometimes devices work best advertising and others when discovering (this can depend on their Bluetooth and WiFi capabilities), so if your devices don't see each other, switch which device advertises and which device discovers.
Discover will only listen for advertising devices
Advertise will only listen for discovering devices
Once a connection has been discovered, for your own security you will need to confirm the displayed code on both devices match before accepting the connection. Both devices need to accept before a connection is established.
If a connection has been established and is then lost, you will not need to reaccept the code again as the device has already been set as trusted. Restarting the app forces this to request confirmation again.
Nearby Connection Strategy/Mode
The three connection modes available are:
Cluster (also known as P2P_CLUSTER). This is the default mode
Star (also known as P2P_STAR)
Single (also known as P2P_POINT_TO_POINT)
Host options (only visible when acting as a host)
You can allow the passthrough of other host messages (act as a soft host), or block other host messages you receive (hard host) being passed to your connected clients.
You can choose to only see connection requests when viewing the Connect devices page. This reduces the chance of a connection request when you are busy performing.
Client options (only visible when acting as a client)
You can choose to use the host's version of a song (rather than your locally saved copy), copy the host song to your device (be aware this overwrites any local file you have with the same name), listen for section changes and listen for autoscroll start/stop commands.
Which strategy/mode should you use?
If you only ever need to make a connection with one other device, use single mode. This gives the highest possible bandwith and improves connection stability. You will only be able to make a connection to one other device. If you try to connect to a second device, the first device will be disconnected.
If you will always have one device set as the host and others set as clients and don't change which device is the host, choose star mode. Clients need to either be connected to the host directly, or to another client that is. This gives a slightly more stable connection that cluster mode, but not as good as single mode.
If you want the most versatile mode, or you are unsure, stick with cluster. This allows devices to easily switch between host and client. When this happens, as long as client devices have a direct or indirect connection to a host, they will listen for incoming messages. This also allows any device to connect directly to any other device, even if it already has a connection. This mode, due to the possible complexity has the lowest bandwith, however, any delay is small.
Google Play Services (part of Google Play Store)
Bluetooth and/or WiFi equipped. The device does not need to be, but can be, connected to a network.
Android Permissions required:
Android 12 (and above): BLUETOOTH_SCAN (no location required), BLUETOOTH_CONNECT, BLUETOOTH_ADVERTISE
Android 11: BLUETOOTH, BLUETOOTH_ADMIN, ACCESS_FINE_LOCATION
Android 10 or lower: BLUETOOTH, BLUETOOTH_ADMIN, ACCESS_COARSE_LOCATION