Dolphin MOVE SDK
2.x
2.x
  • Introduction
  • MOVE Services
  • MOVE SDK
    • Getting Started
      • MOVE Dashboard
        • Access Control
        • Configuration
        • Timeline
        • Points of Interest
      • Android
        • Installation
        • Quick Start
      • iOS
        • Installation
        • Quick Start
        • Troubleshooting
      • React Native
      • Flutter
      • Move SDK CLI
    • API Interface
      • Android
        • Initialization
        • Services
      • iOS
        • Initialization
        • Setup
        • Services
      • React Native
        • Components
        • Initialization
        • Services
      • Flutter
        • Initialization
        • Services
    • Models
      • Listeners/Callbacks
      • MoveAssistanceCallStatus
      • MoveAuth
      • MoveAuthError
      • MoveAuthResult
      • MoveAuthState
      • MoveConfig
      • MoveConfigurationError
      • MoveDevice
      • MoveDeviceStatus
      • MoveGeocodeError
      • MoveHealthItem
      • MoveHealthScore
      • MoveOptions
        • DeviceDiscovery
      • MoveSdkState
      • MoveSdkAndroidConfig
      • MoveTripState
      • MoveScanResult
      • MoveServiceFailure
      • MoveServiceWarning
      • MoveShutdownResult
    • Appendix
      • Token refresh
      • Android
        • Permission Handling
          • Permission Overview
          • Runtime Permissions
        • Battery optimization
        • Notification Management
        • Forcing the Signal - Classic Bluetooth
      • iOS
        • Permissions Handling
        • App Store
      • React Native
        • Permission Handling
  • MOVE Backend
    • MOVE Backend
      • MOVE Admin API
      • MOVE TIMELINE API
      • MOVE State API
      • MOVE Last Location API
    • MOVE Generic Notifier
    • MOVE Assistance Notifier
    • Example requests
  • FAQ
  • Changelog
    • Android
    • iOS
    • React
    • Flutter
    • Backend
  • Data privacy (GDPR)
Powered by GitBook
On this page
  • Background
  • Challenge
  • Impact on the MOVE SDK
  • Use-case example
  • Hint: Forcing ACL Broadcasts
  1. MOVE SDK
  2. Appendix
  3. Android

Forcing the Signal - Classic Bluetooth

PreviousNotification ManagementNextiOS

Last updated 1 month ago

Background

Bluetooth connections are now very reliable, but problems can still occur. Especially with classic Bluetooth connections and also problems with missing . Some Bluetooth problems could also occur if the necessary permissions are granted during ongoing operations.

Please ensure that all necessary permissions are obtained before any app specific Bluetooth operations.

Unlike Bluetooth Low Energy (BLE), where connection status and changes can be reliably tracked, detecting the current connection status of Classic Bluetooth devices on Android comes with certain limitations. The Android system provides only limited information about existing connections to Bluetooth devices—especially when those connections were not initiated directly by the app itself.

Challenge

Android does not offer a reliable API to determine whether a Classic Bluetooth device is currently connected, unless the connection was explicitly established by the app. While system broadcasts like BluetoothDevice.ACTION_ACL_CONNECTED and BluetoothDevice.ACTION_ACL_DISCONNECTED do exist, they come with significant limitations:

  • Not guaranteed: These broadcasts may be suppressed by power-saving mechanisms or system restrictions (e.g., Doze mode, background limitations).

  • Ephemeral: They are only emitted when the connection state changes and are not retained—an app that starts later cannot reliably reconstruct the current connection state.

Impact on the MOVE SDK

If a Bluetooth connection is established outside of the MOVE SDK (e.g., by another app or directly by the system), our Android module cannot reliably detect the actual connection status. This limitation applies only to Classic Bluetooth devices and not to BLE devices.

Use-case example

Imagine the device of a user is already connected via classic Bluetooth with the car. Now the user installs your app with the MOVE SDK included or the necessary Bluetooth permissions were not granted yet.

The app has never received a BluetoothDevice.ACTION_ACL_CONNECTED or BluetoothDevice.ACTION_ACL_DISCONNECTED . Now we are in the situation that the app does not know if the (already connected) car is connected or disconnected.

Hint: Forcing ACL Broadcasts

It is possible to force the system to emit BluetoothDevice.ACTION_ACL_CONNECTED or ACTION_ACL_DISCONNECTED broadcasts by toggling the Bluetooth state on the device.

For example you can add the following message to the device registration screen in your app:

Please turn Bluetooth off and on again on your smartphone.

This action resets the internal Bluetooth stack and trigger connection status updates, which in turn picked up by your SDK'sBroadcastReceiver.

permissions