https://github.com/duhow/bluemate
Find your nearby mates!
https://github.com/duhow/bluemate
Last synced: 10 days ago
JSON representation
Find your nearby mates!
- Host: GitHub
- URL: https://github.com/duhow/bluemate
- Owner: duhow
- Created: 2026-04-26T04:04:41.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-03T03:58:50.000Z (about 2 months ago)
- Last Synced: 2026-05-03T05:27:45.343Z (about 2 months ago)
- Language: Kotlin
- Size: 112 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Bluemate
Find nearby Bluemate users via BLE iBeacon with distance and compass.
---
Bluemate uses Bluetooth Low Energy (BLE) to discover other nearby users running the app. Each device advertises as an iBeacon and scans for others, reporting their estimated distance in meters. A built-in compass shows your current heading to help locate nearby users.
### Features
- **iBeacon advertising & scanning** – automatically broadcasts and discovers nearby Bluemate users.
- **Selectable discovery mode** – choose between full scan mode (announce + discover) or beacon-only mode (announce only) for devices that cannot reliably do both at once.
- **Distance estimation** – calculates approximate distance in meters from BLE signal strength (RSSI).
- **Compass** – displays your device orientation using accelerometer and magnetometer sensors.
- **Background service** – runs as an Android foreground service so scanning continues when the app is in the background.
- **Battery optimization** – requests exemption from battery restrictions to ensure continuous operation.
### Keystore
To sign your APK, create a keystore. **Keep it safe**.
```sh
keytool -genkeypair -v -keystore release.jks -alias bluemate -keyalg EC -groupname secp256r1 -sigalg SHA256withECDSA -validity 10000
```
You can upload it to GitHub Actions as Secret `ANDROID_KEYSTORE_BASE64` to generate Release APKs.
```sh
base64 -w 0 release.jks ; echo
```
Then define `ANDROID_KEYSTORE_PASSWORD`, `ANDROID_KEY_PASSWORD` (default is the same), and `ANDROID_KEY_ALIAS` as configured.