{"id":18575766,"url":"https://github.com/estimote/android-fleet-management-sdk","last_synced_at":"2026-03-14T17:35:26.162Z","repository":{"id":12247503,"uuid":"14861829","full_name":"Estimote/Android-Fleet-Management-SDK","owner":"Estimote","description":"Estimote Fleet Management SDK for Android","archived":false,"fork":false,"pushed_at":"2019-08-16T07:40:04.000Z","size":78849,"stargazers_count":835,"open_issues_count":2,"forks_count":450,"subscribers_count":128,"default_branch":"master","last_synced_at":"2025-04-03T11:11:11.385Z","etag":null,"topics":["android","beacons","estimote","estimote-cloud"],"latest_commit_sha":null,"homepage":"https://developer.estimote.com","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Estimote.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-12-02T12:35:43.000Z","updated_at":"2025-02-23T10:28:43.000Z","dependencies_parsed_at":"2022-09-26T21:51:16.746Z","dependency_job_id":null,"html_url":"https://github.com/Estimote/Android-Fleet-Management-SDK","commit_stats":null,"previous_names":["estimote/android-sdk"],"tags_count":58,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Estimote%2FAndroid-Fleet-Management-SDK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Estimote%2FAndroid-Fleet-Management-SDK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Estimote%2FAndroid-Fleet-Management-SDK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Estimote%2FAndroid-Fleet-Management-SDK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Estimote","download_url":"https://codeload.github.com/Estimote/Android-Fleet-Management-SDK/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248564908,"owners_count":21125412,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","beacons","estimote","estimote-cloud"],"created_at":"2024-11-06T23:22:01.186Z","updated_at":"2025-12-18T02:17:20.639Z","avatar_url":"https://github.com/Estimote.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Estimote Fleet Management SDK for Android\n\n  * [Introduction](#introduction)\n    + [\"Can I use this SDK to detect beacons?\"](#can-i-use-this-sdk-to-detect-beacons)\n    + [\"Do I need to build an app to configure my beacons?\"](#do-i-need-to-build-an-app-to-configure-my-beacons)\n  * [Requirements](#requirements)\n  * [Installation](#installation)\n    + [Connecting Fleet Management SDK to your Estimote Cloud account](#connecting-fleet-management-sdk-to-your-estimote-cloud-account)\n  * [Bulk Updater](#bulk-updater)\n  * [Configuring individual beacons](#configuring-individual-beacons)\n  * [API documentation (AKA JavaDocs)](#api-documentation-aka-javadocs)\n  * [Feedback, questions, issues](#feedback-questions-issues)\n  * [Changelog](#changelog)\n\n## Introduction\n\nEstimote Fleet Management SDK allows you to **configure and update your Estimote Beacons via your own Android app**, for example:\n\n - enable Estimote Monitoring and Estimote Telemetry\n - enable iBeacon, and change its UUID, major, minor, transmit power\n - update beacon's firmware\n - etc.\n\nYou can [configure your beacons one by one](#configuring-individual-beacons), or use Estimote Cloud to queue \"pending settings\" on your beacons and apply these settings with the [Bulk Updater](#bulk-updater).\n\nIntegrating this SDK into your app means the users of your app can automatically propagate any configuration changes to your beacons. Say, you deployed the beacons, but the initial usage suggests you need to bump the transmit power up a notch, or maybe make the Telemetry advertise more frequently. With Bulk Updater integrated into the app, any user of the app in range of a \"pending settings\" beacon will apply the new settings.\n\n(Settings that live entirely in Estimote Cloud, like the beacon's name, tags, and attachments, are always updated instantly, without the need to propagate settings to beacons.)\n\n### \"Can I use this SDK to detect beacons?\"\n\nShort version: no, use the [Proximity SDK](https://github.com/Estimote/Android-Proximity-SDK) instead.\n\nLonger version: this SDK was previously known as \"Estimote SDK\", and it included APIs for detecting your beacons, which you could use to show notifications, etc. **These APIs are now deprecated and are no longer supported.** They have been replaced with the [Estimote Proximity SDK for Android](https://github.com/Estimote/Android-Proximity-SDK), powered by [Estimote Monitoring](https://community.estimote.com/hc/en-us/articles/360003252832-What-is-Estimote-Monitoring-).\n\nYou can, and are encouraged to, use the Fleet Management SDK alongside the Proximity SDK: Proximity SDK for driving the proximity-based events in your app, and Fleet Management SDK for remotely managing your beacons.\n\n### \"Do I need to build an app to configure my beacons?\"\n\nNo, you can use our [Estimote Android app](https://play.google.com/store/apps/details?id=com.estimote.apps.main\u0026hl=en) to change the most common settings, and to apply \"pending settings\" to individual beacons. Connecting to the beacon in the app automatically applies the latest settings from Estimote Cloud.\n\nIf you have more Estimote devices, [Estimote Deployment app](https://itunes.apple.com/us/app/estimote-deployment/id1109375679?mt=8) can apply \"pending settings\" in bulk. At this time, it's available on iOS only.\n\n## Requirements\n\nAndroid 4.3 or later, and an Android device with Bluetooth Low Energy.\n\nThe minimum Android API level this SDK will run on is 9 (= Android 2.3), but the Bluetooth-detection features (which is most of them) won't work. You can handle this gracefully in your app by not using the fleet management features if you detect Android \u003c 4.3, or no Bluetooth Low Energy available.\n\nBluetooth Low Energy scanning on Android also requires the app to obtain the location permissions from the user, and \"location\" must also be enabled system-wide. Chances are, if your app is using beacons (e.g., via the Estimote Proximity SDK), [you already have this permission](https://developer.estimote.com/proximity/android-tutorial/#request-location-permissions).\n\n## Installation\n\nThis SDK is distributed via JCenter repository. Most of the time, you'll already have JCenter repo configured in your Android project, with these lines in the Project build.gradle:\n\n```gradle\nallprojects {\n    repositories {\n        jcenter()\n        // ...\n    }\n}\n```\n\nIf not, add `jcenter()` inside `repositories`, as shown above. Then, in the Module build.gradle, add:\n\n```gradle\ndependencies {\n    implementation 'com.estimote:mgmtsdk:1.4.6'\n    implementation 'com.estimote:coresdk:1.3.4'\n    // if using an older version of Gradle, try \"compile\" instead of \"implementation\"\n}\n```\n\n### Connecting Fleet Management SDK to your Estimote Cloud account\n\nThis SDK needs to be able to access your Estimote Cloud account in order to configure your beacons.\n\nTo do that, register your mobile app in Estimote Cloud in the \"Mobile Apps\" section. You'll get an App ID and App Token, which you can use to initialize the SDK:\n\n```java\n// do this before you use any of the fleet management features\nEstimoteSDK.initialize(applicationContext, \"my-app-bf6\", \"7bcabedcb4f...\");\n```\n\nYour Estimote Cloud account needs to have a fleet management subscription. As of now, there's a free, indefinite trial available if you have less than 20 devices.\n\n## Bulk Updater\n\nThis is how to set up the Bulk Updater: (we recommend doing this in an Application subclass)\n\n```java\nprivate BulkUpdater bulkUpdater;\n\n@Override\nprotected void onCreate() {\n    super.onCreate();\n\n    Context context = getApplicationContext();\n    bulkUpdater = new BulkUpdaterBuilder(context)\n        .withFirmwareUpdate()\n        .withCloudFetchInterval(1, TimeUnit.HOURS)\n        .withTimeout(0)\n        .withRetryCount(3)\n        .build()\n}\n```\n\nAnd this is how to use it:\n\n```java\nbulkUpdater.start(new BulkUpdater.BulkUpdaterCallback() {\n    @Override\n    public void onDeviceStatusChange(ConfigurableDevice device,\n            BulkUpdater.Status newStatus, String message) {\n        Log.d(\"BulkUpdater\", device.deviceId + \": \" + newStatus);\n    }\n\n    @Override\n    public void onFinished(int updatedCount, int failedCount) {\n        Log.d(\"BulkUpdater\", \"Finished. Updated: \" +\n                updatedCount + \", Failed: \" + failedCount);\n    }\n\n    @Override\n    public void onError(DeviceConnectionException e) {\n        Log.d(\"BulkUpdater\", \"Error: \" + e.getMessage());\n    }\n});\n```\n\nOne more thing: you need to feed the BulkUpdater with data from the beacons' Connectivity packets:\n\n```java\nprivate BeaconManager beaconManager;\n\n// ...\n\nbeaconManager = new BeaconManager(context);\n\n// this will make the beacon attempt to detect Connectivity packets for 10 seconds,\n// then wait 50 seconds before the next detection, then repeat the cycle\nbeaconManager.setForegroundScanPeriod(10000, 50000);\n\n// this connects to an underlying service, not to the beacon (-;\nbeaconManager.connect(new BeaconManager.ServiceReadyCallback() {\n    @Override\n    public void onServiceReady() {\n        beaconManager.setConfigurableDevicesListener(new BeaconManager.ConfigurableDevicesListener() {\n            @Override\n            public void onConfigurableDevicesFound(List\u003cConfigurableDevice\u003e configurableDevices) {\n                bulkUpdater.onDevicesFound(configurableDevices);\n            }\n        });\n    }\n});\nbeaconManager.startConfigurableDevicesDiscovery();\n```\n\nTo stop, and clean up after the BulkUpdater, do:\n\n```java\nbeaconManager.stopConfigurableDevicesDiscovery()\nbulkUpdater.stop();\nbulkUpdater.destroy();\n```\n\n## Configuring individual beacons\n\nIf you want to individually configure a beacon, you'll need to connect to it first: [Connecting to beacons](https://github.com/Estimote/Android-Fleet-Management-SDK/blob/master/Docs/DOC_deviceConnection.md).\n\nOnce connected, you can read and write settings, as well as update the beacon's firmware: [Basic operations on connected device](https://github.com/Estimote/Android-Fleet-Management-SDK/blob/master/Docs/DOC_deviceConnection.md#basic-operations-on-connected-device) and [Advanced operations on connected device](https://github.com/Estimote/Android-Fleet-Management-SDK/blob/master/Docs/DOC_deviceConnection.md#advanced-operations-on-connected-device).\n\n## API documentation (AKA JavaDocs)\n\n… is available here:\n\n\u003chttp://estimote.github.io/Android-Fleet-Management-SDK/JavaDocs/\u003e\n\n## Feedback, questions, issues\n\nPost your questions and feedback to [Estimote Forums](https://forums.estimote.com), we'd love to hear from you!\n\nReport issues on the [issues page](https://github.com/Estimote/Android-Fleet-Management-SDK/issues).\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Festimote%2Fandroid-fleet-management-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Festimote%2Fandroid-fleet-management-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Festimote%2Fandroid-fleet-management-sdk/lists"}