A cross-platform Bluetooth Low Energy (BLE) scanner application built with .NET MAUI and Shiny framework.
- 🔍 Real-time BLE Device Scanning - Discover nearby Bluetooth LE devices
- 📊 Signal Strength Monitoring - Visual indication of signal strength with color coding
- 📱 Device Information Display - Shows device name, address, manufacturer data, and services
- 🔄 Live Updates - Real-time updates of device information and timestamps
- 🎯 Optimized Performance - Batch processing and efficient UI updates
- 🚀 Modern UI - Clean and responsive interface built with .NET MAUI
Coming soon - Screenshots will be added here
- .NET 9.0 or later
- Visual Studio 2022 17.8+ or Visual Studio Code with C# extension
- Android SDK 21+ (for Android deployment)
- iOS 12.2+ (for iOS deployment)
- Install .NET 9.0 SDK
- Install Visual Studio 2022 with MAUI workload or VS Code with C# extension
- For Android development: Android SDK and emulator
- For iOS development: Xcode (macOS only)
- Clone the repository:
git clone https://github.com/yourusername/MAUIBleScanner.git
cd MAUIBleScanner- Restore NuGet packages:
dotnet restore- Build the project:
# For Android
dotnet build -f net9.0-android
# For iOS (macOS only)
dotnet build -f net9.0-ios- Run the application:
# For Android
dotnet run -f net9.0-android
# For iOS (macOS only)
dotnet run -f net9.0-iosThe application requires the following permissions:
BLUETOOTH- Access to Bluetooth adapterBLUETOOTH_ADMIN- Bluetooth administrationBLUETOOTH_SCAN- Scan for Bluetooth devices (Android 12+)BLUETOOTH_CONNECT- Connect to Bluetooth devices (Android 12+)ACCESS_FINE_LOCATION- Required for BLE scanningACCESS_COARSE_LOCATION- Location access for device discovery
- Bluetooth usage permission will be requested at runtime
The application follows MVVM patterns and uses:
- Shiny.BluetoothLE - Cross-platform Bluetooth LE library
- Microsoft.Extensions.DependencyInjection - Dependency injection
- System.Reactive - Reactive programming for async operations
- .NET MAUI - Cross-platform UI framework
MAUIBleScanner/
├── Models/
│ └── BleDeviceInfo.cs # Device information model
├── Converters/
│ └── IsNotNullOrEmptyConverter.cs # XAML value converter
├── MainPage.xaml # Main UI layout
├── MainPage.xaml.cs # Main page logic
├── App.xaml # Application resources
├── App.xaml.cs # Application entry point
├── AppShell.xaml # Navigation shell
├── AppShell.xaml.cs # Shell configuration
└── MauiProgram.cs # Service configuration
- Green: Excellent signal (≥ -50 dBm)
- Orange: Good signal (-70 to -50 dBm)
- Red: Poor signal (< -70 dBm)
- Batch processing of scan results (500ms intervals)
- Efficient UI updates using MainThread synchronization
- Smart property change notifications to minimize re-renders
- Device caching to prevent duplicate entries
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Microsoft.Maui.Controls - MAUI framework
- Shiny.BluetoothLE - Bluetooth LE functionality
- Shiny.Core - Core Shiny services
- Shiny.Hosting.Maui - MAUI integration
- Microsoft.Extensions.Logging.Debug - Debug logging
-
No devices found
- Ensure Bluetooth is enabled
- Grant location permissions
- Check if there are BLE devices nearby
- Verify app has necessary permissions
-
Build errors on iOS
- Ensure you're building on macOS
- Check Xcode installation
- Verify iOS SDK is installed
-
Permission errors
- Check AndroidManifest.xml for required permissions
- Ensure runtime permissions are granted
This project is licensed under the MIT License - see the LICENSE file for details.
- Shiny Framework for excellent Bluetooth LE support
- .NET MAUI for cross-platform development
- Community contributors and testers
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Include device information, OS version, and error messages