{"id":21485295,"url":"https://github.com/oblakr24/blescanner","last_synced_at":"2025-10-27T13:17:51.707Z","repository":{"id":175367985,"uuid":"646526148","full_name":"oblakr24/BLEScanner","owner":"oblakr24","description":"A BLE device scanner app with BLE characteristic interaction functionalities","archived":false,"fork":false,"pushed_at":"2023-06-15T17:59:50.000Z","size":737,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-23T19:25:55.876Z","etag":null,"topics":["ble","bluetooth","compose","compose-navigation","coroutines-flow","jetpack-compose","material3-android","rxjava3"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oblakr24.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-28T17:18:30.000Z","updated_at":"2024-05-27T11:59:17.000Z","dependencies_parsed_at":"2023-08-01T13:15:53.551Z","dependency_job_id":null,"html_url":"https://github.com/oblakr24/BLEScanner","commit_stats":null,"previous_names":["oblakr24/blescanner"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oblakr24%2FBLEScanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oblakr24%2FBLEScanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oblakr24%2FBLEScanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oblakr24%2FBLEScanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oblakr24","download_url":"https://codeload.github.com/oblakr24/BLEScanner/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244013291,"owners_count":20383707,"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":["ble","bluetooth","compose","compose-navigation","coroutines-flow","jetpack-compose","material3-android","rxjava3"],"created_at":"2024-11-23T13:14:47.856Z","updated_at":"2025-10-27T13:17:46.666Z","avatar_url":"https://github.com/oblakr24.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BLE Device Detection App\n\nThis is a demonstration app designed for detecting nearby BLE (Bluetooth Low Energy) devices, connecting to them, \nlisting their services and characteristics, and interacting with those characteristics.\n\nIts purpose is to demonstrate the BLE functionalities, Coroutines and Rx interoperability and testing approaches.\n\n## Video\n\nhttps://github.com/oblakr24/BLEScanner/assets/32245831/8a6e36a4-d703-48b5-b703-b33e4b1bf2e6\n\n## Usage\n\n1. **Scan for devices:** Run the app and it will display a list of nearby BLE devices. Click on a device to proceed.\n\n2. **Connect to a device:** Once you're in the connection screen, click on the \"Connect\" button. This will trigger a discovery process for the services and characteristics of the chosen device.\n\n3. **Interact with characteristics:** Clicking on a characteristic will open a dialog that allows for interactions. Once an action is performed, the dialog closes and the corresponding event should appear in the logs.\n\n## Technologies\n\n**This app is made using:**\n\n- Jetpack Compose for UI with Material 3 and dark/light mode support\n- RxJava 3 for the BLE module\n- Coroutines for bridging the BLE functionalities with the Flows on the app module\n\n**Stack:**\n- MVVM architecture (mix of MVVM and MVI)\n- RxJava3 in the BLE module\n- Coroutines/Flows on the app module for interacting with RxJava3 observables from the BLE module\n- [Jetpack Compose](https://developer.android.com/jetpack/compose) and [Compose Navigation](https://developer.android.com/jetpack/compose/navigation): UI\n- [Hilt](https://dagger.dev/hilt/) for dependency injection\n- [KotlinX Serialization](https://github.com/Kotlin/kotlinx.serialization) for serialization and deserialization of models into and from files\n- [Retrofit](https://github.com/square/retrofit) for network requests\n- [Extended Material icons](https://developer.android.com/jetpack/androidx/releases/compose-material) for vector images\n- [Accompanist Permissions](https://github.com/google/accompanist/tree/main/permissions) for Composable permission handling\n- [DataStore](https://developer.android.com/topic/libraries/architecture/datastore) for persisting user preferences\n- [MockK](https://mockk.io/) for mocking in tests\n\n## Permissions\n\nBluetooth permissions are required (depending on Android version) to allow for the full functionality set.\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github-production-user-asset-6210df.s3.amazonaws.com/32245831/246185716-dbe9e467-fe90-4dc1-a18c-ba87b11c16c1.jpg\" width=\"270\" height=\"570\"\u003e\n  \u003cimg src=\"https://github-production-user-asset-6210df.s3.amazonaws.com/32245831/246185859-c5384f0f-543e-46db-a963-bc9454787512.jpg\" width=\"270\" height=\"570\"\u003e\n  \u003cimg src=\"https://github-production-user-asset-6210df.s3.amazonaws.com/32245831/246185901-44958f86-1faa-4253-8b11-47472215708e.jpg\" width=\"270\" height=\"570\"\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foblakr24%2Fblescanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foblakr24%2Fblescanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foblakr24%2Fblescanner/lists"}