-
-
Notifications
You must be signed in to change notification settings - Fork 12
Major Feature Update: ADB-less Mirroring, Health Connect, Audio Streaming & More #65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
shantanunautiyal
wants to merge
48
commits into
sameerasw:multiple-features
Choose a base branch
from
shantanunautiyal:main
base: multiple-features
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Major Feature Update: ADB-less Mirroring, Health Connect, Audio Streaming & More #65
shantanunautiyal
wants to merge
48
commits into
sameerasw:multiple-features
from
shantanunautiyal:main
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version upgrade
UI redesign, Reconnect fix, and more
Added haptics for buttons,switches, actions and connecting status
…s, add health data features - Fixed SimpleHealthScreen syntax errors - Fixed MediaNotificationListener ClassCastException for SpannableString - Added FileTransferScreen with file/folder picker - Implemented FileReceiveManager with SHA-256 checksum verification - Added FileTransferUtil for sending files with checksum - Updated JsonUtil to include checksum in file transfer JSON - Added file transfer notification support - Fixed all build issues - Added DocumentFile dependency for folder access - Improved real-time notification capture - Added live notification/activity sharing to macOS
…with chunks - Removed folder picker and sendFolder function - Fixed file sending to use chunk-based protocol (init, chunks, complete) - Files now sent in smaller chunks instead of one large JSON - Added transfer ID for tracking - Added proper progress tracking - Files are now actually sent to macOS when selected
- Added timezone logging to identify time range issues - Added permission checking before data fetch - Added detailed logging for each metric query - Improved error messages with full exception details - Added query time range logging - This will help identify why health data is not showing correctly
File Transfer Improvements: - Added file selection preview showing selected files - Added 'Send Now' button to explicitly send files - Added 'Cancel' button to clear selection - Shows sending progress with loading indicator - Files are now sent only when user clicks Send Background Sync Service: - Created BackgroundSyncService for continuous syncing - Runs as foreground service to stay alive - Auto-reconnects when connection drops - Syncs notifications, health data, calls, messages in background - Added toggle in Settings to enable/disable background sync - Shows persistent notification when running - Maintains WebSocket connection automatically
- Fixed buffer reuse issue in FileTransferUtil causing incorrect chunk data - Improved Base64 decoding with fallback strategy in FileReceiveManager - Enhanced chunk assembly with pre-allocated arrays and validation - Normalized checksum comparison (trim + lowercase) - Added detailed logging for checksum verification and debugging - Added macMediaControl message handler for Mac->Android media controls - Implemented handleMacMediaControl() to process play/pause/next/previous/like actions - Added macMediaControlResponse JSON creation and sending - Bidirectional media controls now fully functional
… improvements Android fixes: - Fix Mac media controls always visible and functional - Fix screen capture invalid parameters error - Fix expand networking text overflow - Add mirror request notification when app minimized macOS fixes: - Fix 10+ threading crashes with AppState calls - Add hardware decoder optimization for better FPS - Add timeout for mirror request button grey state - Wrap all AppState updates in DispatchQueue.main.async Consolidated documentation into single CHANGELOG.md
- Fix screen capture invalid parameters by providing default MirroringOptions - Add rate limiting to file transfers (10ms delay every 10 chunks) - Prevent network overload when sending multiple files
- Send files sequentially to prevent state conflicts - Update UI state on main thread with proper dispatchers - Add comprehensive changelog with all fixes
- Added screen curtain (black overlay) feature with SYSTEM_ALERT_WINDOW permission - Fixed app-specific mirroring to not auto-launch apps - Improved screen state handling (overlay instead of locking device) - Added RawFrameEncoder for better frame encoding - Enhanced WebSocket message handling for screen state - Improved input accessibility service - Fixed mirroring options handling - Cleaned up documentation files
- Fix onNewIntent signature for newer Android APIs - Replace ExperimentalMaterial3ExpressiveApi/LoadingIndicator with CircularProgressIndicator - Add missing PermissionUtil methods and constants - Add Guava dependency for ListenableFuture (CameraX) - Fix CameraX imports and API usage
- Add injectTextViaShell() fallback when accessibility injection fails - Add injectKeyViaShell() for key codes when no focused input field - Arrow keys now use proper input keyevent instead of swipe gestures - All key handlers fall back to shell commands if accessibility fails
- Increase ImageReader buffer from 2 to 3 (triple buffering) - Add adaptive JPEG quality that reduces when frame rate struggles - Improve frame skipping logic to allow 30% faster bursts during scrolling - Increase max consecutive skips to 2 for better burst handling
- Add throttling with minFrameIntervalMs = 40ms (~25 audio frames/sec) - Accumulate audio data and send in batches instead of every read - Prevents audio frames from flooding WebSocket and blocking video
… notifications - CallStateCallback: Skip sending call events when WebSocket is not connected - PhoneStateReceiver: Only send call notifications when connected to Mac - Removed Android-side call notifications (LiveNotificationService calls) - Call notifications should only appear on Mac, not on Android
…ssing to prevent resource exhaustion Implements a Producer-Consumer pattern where handleChunk pushes to a Channel and a single coroutine writes to disk. This replaces the previous 'launch new coroutine per chunk' approach which caused high memory pressure, GC thrashing, and potential socket disconnects on large file transfers.
…eHandler to use Long for file dimensions
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🎯 Summary
This PR introduces several major new features and improvements to AirSync Android, including ADB-less screen mirroring with audio support, Health Connect integration, improved file transfer, Samsung wallpaper fixes, and many stability improvements.
✨ New Features
📱 ADB-less Screen Mirroring
🏥 Health Connect Integration
📁 Android to Mac File Sharing
🖼️ Samsung Wallpaper Fix
🎵 Mac Media Control
📲 Smartspacer Integration
🔧 Improvements
Screen Capture Performance
Audio Capture
Input Handling
Stability & Reliability
📋 New Files Added
AudioCaptureService.kt- Audio streaming from deviceScreenMirroringManager.kt- H.264 video encoding for mirroringRawFrameEncoder.kt- JPEG frame capture for mirroringInputAccessibilityService.kt- Remote control via accessibilityRemoteInputHandler.kt- Input event processingRemoteControlReceiver.kt- Broadcast receiver for remote commandsWallpaperHandler.kt- Samsung wallpaper compatibilityHealthDataCache.kt- Health data cachingSimpleHealthConnectManager.kt- Health Connect API integrationAutoApproveMirrorActivity.kt- Auto-approve mirroring requestsPermissionUtil.kt- Centralized permission handling⚙️ Configuration Changes
gradle/libs.versions.tomlwith new dependenciesaccessibility_service_config.xmlfor Accessibility ServiceAndroidManifest.xmlwith new services and permissions🔐 New Permissions Required
RECORD_AUDIO- For audio mirroringFOREGROUND_SERVICE_MEDIA_PROJECTION- For screen captureAccessibility Service- For remote control (tap, swipe, keyboard)Health Connect- For health data sync (optional)📝 Notes