Commit Graph
100 Commits
Author SHA1 Message Date
Benjamin Wiegand 6a62f1b798 feat: privileged audio capture via REMOTE_SUBMIX
allows navigation instructions to be captured
2026-06-20 15:28:44 -07:00
Benjamin Wiegand b6974a05f2 fix: clear calling identity on binder transaction
fixes some issues with daemon running as root for REMOTE_SUBMIX audio capture
2026-06-20 13:39:52 -07:00
Benjamin Wiegand 31806a0c8f fix: open audio channel immediately but wait for audio capture before starting 2026-06-20 13:35:59 -07:00
Benjamin Wiegand 34e081aeb7 refactor: move AudioCapture to libprivd
part of allowing privd to implement an audio capture
2026-06-20 12:54:41 -07:00
Benjamin Wiegand e064683d6a feat: add permission check when switching operational mode 2026-06-18 15:12:03 -07:00
Benjamin Wiegand a733b03d03 refactor: allow parsing preference enums based on the preference value instead of reading them 2026-06-18 15:11:37 -07:00
Benjamin Wiegand 41e23697e2 fix: move root permission error dialog to request 2026-06-18 15:09:49 -07:00
Benjamin Wiegand afdf23caf8 feat: permission check in main activity 2026-06-18 14:47:26 -07:00
Benjamin Wiegand 089bc6910b feat: activity for permission checking and requesting 2026-06-18 14:33:43 -07:00
Benjamin Wiegand 116f61d734 fix: declare legacy bluetooth permission 2026-06-18 13:04:37 -07:00
Benjamin Wiegand 95210ba0e5 feat: save pinned dock items 2026-06-15 16:12:17 -07:00
Benjamin Wiegand 5690f14fb3 feat: automatically show/hide dock divider visibility 2026-06-15 11:55:14 -07:00
Benjamin Wiegand 9baf233644 fix: don't animate icon load in app drawer
fixes an issue where some app icons would be invisible after scrolling with keyboard/rotary

the animation doesn't add much anyway
2026-06-15 11:54:13 -07:00
Benjamin Wiegand 5951c45ffd fix: don't focus dock divider with rotary/dpad 2026-06-15 11:52:04 -07:00
Benjamin Wiegand d48a58b018 release: v0.0.2 2026-06-14 13:37:05 -07:00
Benjamin Wiegand a107cf7849 feat: automatic wireless connection upon bluetooth connection 2026-06-14 13:13:47 -07:00
Benjamin Wiegand 7748e8e5a6 fix: ensure connection service notification doesn't re-appear after death 2026-06-11 16:09:57 -07:00
Benjamin Wiegand d2834e385e fix: connector log tags 2026-06-11 16:09:10 -07:00
Benjamin Wiegand 4489c32807 feat: allow disabling frame rate optimization
headunit revived appears to interpret the missing frames as decoder stall and tries to restart the video decoding session, which doesn't work and causes it to break.

I believe android auto does the same optimization, but the UI forces constant updates which nullify it. not sure if that's intentional?
2026-06-11 13:04:20 -07:00
Benjamin Wiegand e6564aaca6 feat: support 2k and 4k resolutions 2026-06-10 18:00:59 -07:00
Benjamin Wiegand fe3454a1da fix: change dark mode app modal color
on lineage os with the pitch black theme it was removing the dynamic color from the modal without removing it from the background, which looked awful.
2026-06-10 18:00:16 -07:00
Benjamin Wiegand b68fef519a fix: check thread interrupt status in connection loop
makes stopping the connection via the notification button more reliable
2026-06-10 17:58:14 -07:00
Benjamin Wiegand 39ab7c964e feat: experimental wireless connection
no auto connect yet, might try using the companion API if possible
2026-06-10 17:56:13 -07:00
Benjamin Wiegand e7299b2de7 fix: initialize channels in order
this appears to match how android auto initializes channels, but I haven't seen any headunits have issues with this yet

either way this is a bit easier to follow
2026-06-07 17:58:45 -07:00
Benjamin Wiegand 6b203e43a6 fix: support varint encoding for field tags
fixes compatibility with desktop headunit
2026-06-07 17:00:06 -07:00
Benjamin Wiegand bafecbec96 fix: default AV channel type to video
for compatibility with desktop headunit
2026-06-07 16:58:39 -07:00
Benjamin Wiegand 41b15657a8 feat: debug constant for auto-starting TCP server 2026-06-07 16:56:00 -07:00
Benjamin Wiegand 35af57c70a feat: support connection over TCP development server
can be used to do wireless with headunit emulators that support it, but not quite optimal yet
2026-06-07 14:27:14 -07:00
Benjamin Wiegand 5cc03bbef5 fix: don't send audio channel open on main thread
a hack for now, but it works
2026-06-07 14:27:07 -07:00
Benjamin Wiegand b9f745fb01 refactor: move connection logic to AAConnector implementation
makes it more modular so different connection mediums can be supported
2026-06-07 14:26:52 -07:00
Benjamin Wiegand 2f96639eff refactor: remove outdated todo 2026-06-07 14:26:46 -07:00
Benjamin Wiegand 17030292d4 fix: create assets directory in git 2026-06-07 14:26:32 -07:00
Benjamin Wiegand 0ed7ad006e update readme 2026-04-30 11:59:50 -07:00
Benjamin Wiegand cd4b0c5d92 feat: remove video buffer
adds BufferReader which allows multiple pieces of buffers to be supplied as a payload. this eliminates some array copies and removes the need for a video buffer.

also replaces the video buffer size pref with video bitrate controls.
2026-04-23 14:03:25 -07:00
Benjamin Wiegand 1e19051e07 update readme 2026-04-22 13:02:13 -07:00
Benjamin Wiegand cf7ab2300a add issue templates 2026-04-22 11:06:09 -07:00
Benjamin Wiegand 039f0a652f feat: hide system bars in projection activity
primarily for ease of debugging
2026-04-19 12:29:40 -07:00
Benjamin Wiegand 19d1049568 feat: add software back button 2026-04-19 12:27:59 -07:00
Benjamin Wiegand 97777c650f feat: forward back button to focused app 2026-04-19 11:56:48 -07:00
Benjamin Wiegand 1c053c159a feat: add focus tracking for split-screen
to be used to determine where key events go
2026-04-19 11:19:39 -07:00
Benjamin Wiegand 47e3fb4628 feat: combine navigation and media categories
these categories seem to not have very many apps usually, so probably best to just combine them

focused category is not shown since it's usually identical to navigation and media, but it will be replaced with a favorites category at some point
2026-04-18 21:37:51 -07:00
Benjamin Wiegand 6bf875e195 fix: splash animation on task switch 2026-04-18 19:53:41 -07:00
Benjamin Wiegand e6a5ff5009 feat: force relaunch by destroying virtual display 2026-04-18 19:52:50 -07:00
Benjamin Wiegand f7c642df70 feat: show error dialog for activity relaunch failure 2026-04-18 18:56:08 -07:00
Benjamin Wiegand 9c08e6365a feat: task context buttons overlay
- add explicit listener call for content focus
- tapping the active task opens splash and requests content focus
- add separate splash for ProjectionTask, like VirtualActivity splash but can be modified without modifying virtual activities
- add button preset
- add AppRecord picker dialog
- move virtual activity splash to separate file
- remove split screen launch modal
- add close and re-launch buttons for each activity
- limit VirtualActivity creation and destruction in ProjectionTaskManager to package-private
- add the ability to remove tasks
- some fixes to support switching to null task
2026-04-18 18:05:20 -07:00
Benjamin Wiegand c5945cf26f feat: improve virtual activity splash design 2026-04-15 13:21:56 -07:00
Benjamin Wiegand bdfee1d821 fix: change how virtual activity splash is shown
this isn't a complete fix, I still need to detect activity launch
2026-04-15 13:19:31 -07:00
Benjamin Wiegand 4c0ec9bbfe feat: add ProjectionActivity debug button and move debug buttons to menu 2026-04-15 13:14:13 -07:00
Benjamin Wiegand bfdc55037f feat: change name to Flywheel
after much thinking I have come up with a better name
2026-04-15 07:40:48 -07:00
Benjamin Wiegand 303fe9cbc9 feat: new ui (pt 1)
- removed edit layout button
- dock shows active/open/pinned apps
- workspace-like multi-tasking
- modal supports 3 buttons
- removed virtual activity close button
- reduced virtual activity splash duration
- virtual activity launch failure is soft failure
2026-04-15 07:36:25 -07:00
Benjamin Wiegand 58b4d7036c fix: use startService instead of startForegroundService
fixes some edge cases where the headunit connection fails
2026-04-10 08:11:08 -07:00
Benjamin Wiegand cb7194c01a update readme 2026-04-10 08:09:50 -07:00
Benjamin Wiegand 4c19036897 feat: use material 3 2026-04-10 08:09:28 -07:00
Benjamin Wiegand c9a2881abf fix: center app drawer icons 2026-04-10 08:05:17 -07:00
Benjamin Wiegand cd063f2496 update readme 2026-04-05 20:35:59 -07:00
Benjamin Wiegand 6f171a6eca feat: use imported keys when enabled
useImportedKeys switch now works
2026-04-05 18:36:09 -07:00
Benjamin Wiegand 3bd7a27c1d feat: key/cert import
useImportedKeys switch doesn't do anything yet
2026-04-05 18:11:59 -07:00
Benjamin Wiegand 5e4b7b1b2c fix: parse/serialize var int arrays properly 2026-03-31 20:52:18 -07:00
Benjamin Wiegand b959f69afc feat: support basic rotary input 2026-03-31 20:50:48 -07:00
Benjamin Wiegand af7575ac50 fix: use currently set video preset for touch coordinate calculation
fixes touch coordinates for non-16:9 aspect ratios
2026-03-31 13:23:18 -07:00
Benjamin Wiegand de1a92176b feat: start/stop video on video focus indication
allows video to be successfully backgrounded and resumed on the headunit
2026-03-31 13:10:38 -07:00
Benjamin Wiegand e03ac2c348 fix: use SSLv1 for self-signed cert
the real certs are SSLv1
2026-03-30 18:35:13 -07:00
Benjamin Wiegand 739bdbfc31 feat: request client auth
no certificate validation currently.

somehow, the self-signed keys pass auth on my test headunit. I think this is a bug in my specific headunit where it always passes auth if no certificate with an org set to "CarService" is provided
2026-03-30 18:17:37 -07:00
Benjamin Wiegand f25789552f feat: basic sensor channel
implemented this while trying to get headunit working, but turned out to not be necessary
2026-03-30 17:56:33 -07:00
Benjamin Wiegand 586717c655 fix: request keycodes in input binding 2026-03-30 17:39:33 -07:00
Benjamin Wiegand a8e3a2e979 refactor: define default pref values in prefs.xml 2026-03-30 17:03:37 -07:00
Benjamin Wiegand ca16b7f909 feat: configurable video buffer size
some phones/headunits work well with larger buffers and others struggle. on the other hand, larger buffers significantly increase video quality when applicable
2026-03-30 16:25:56 -07:00
Benjamin Wiegand 2c1f51f408 fix: unregister package list update listeners 2026-03-30 15:43:00 -07:00
Benjamin Wiegand 561df4abb5 feat: consume back button in ProjectionActivity
prevents breaking the whole thing by pressing back
2026-03-30 15:18:43 -07:00
Benjamin Wiegand 4e67373ce7 feat: popup notifications with tts announcement 2026-03-30 10:57:03 -07:00
Benjamin Wiegand 8276b1b3ad feat: send audio focus request 2026-03-29 12:34:09 -07:00
Benjamin Wiegand 000587a07b fix: ping request parsing 2026-03-29 12:10:39 -07:00
Benjamin Wiegand e403939848 feat: wait longer for shizuku connection
some phones restart adbd on USB connection, which kills the shizuku connection. this is a workaround that makes it easier to restart shizuku before the connection times out
2026-03-29 12:06:12 -07:00
Benjamin Wiegand c01ace38c6 fix: totalMessageLength refers to decrypted payload length 2026-03-29 11:59:08 -07:00
Benjamin Wiegand 71a6a5a40a fix: include timestamp in ping resposne 2026-03-28 18:32:08 -07:00
Benjamin Wiegand a98effa3c1 fix: don't use control flag for AV messages 2026-03-28 16:07:06 -07:00
Benjamin Wiegand 161c834c8c fix: separate multiple frames in usb transfer 2026-03-28 16:04:58 -07:00
Benjamin Wiegand 1ba1a4fa29 feat: connect to android open automotive protocol 2026-03-26 20:37:56 -07:00
Benjamin Wiegand 20026f4c6c fix: protobuf types 2026-03-26 20:33:20 -07:00
Benjamin Wiegand fb1149df46 fix: input channel open should have control flag 2026-03-26 20:28:51 -07:00
Benjamin Wiegand 5f65e194d7 update readme 2026-03-26 20:27:05 -07:00
Benjamin Wiegand c5bfce2c81 feat: add buttons to launch/disable Shizuku on bind failure
Some devices restart adbd when USB is connected. The "launch Shizuku" button makes it easier to start Shizuku again after this happens.
2026-03-15 16:52:36 -07:00
Benjamin Wiegand 09dbfa159f fix: handle all errors for virtual activity creation 2026-03-15 16:22:54 -07:00
Benjamin Wiegand d35ac6092c fix: privileged virtual display creation for UID 2000
FLAG_SECURE doesn't work, but that's about it.
2026-03-15 16:21:17 -07:00
Benjamin Wiegand 0d7431f650 update readme 2026-03-15 14:48:27 -07:00
Benjamin Wiegand 24271bafd3 feat: secure projection resume a bit
- only keep projection alive for a configurable amount of time
- only start projection when locked if this is enabled. the addition of button events makes the existing keyguard mechanism potentially insecure, so this can be used instead for the time being. I want to have the keyguard prompt be separate from the projection activity at some point.
2026-03-15 14:07:28 -07:00
Benjamin Wiegand 406ddcc340 feat: suspend and resume projection service
moved ProjectionService instance to ConnectionService, so now temporary
disconnections don't reset the whole UI
2026-03-15 12:35:29 -07:00
Benjamin Wiegand 8507f622ae feat: switch IPrivd to aidl 2026-03-11 10:02:49 -07:00
Benjamin Wiegand e5d1998307 fix: add some missing cellular data badges 2026-03-11 09:39:04 -07:00
Benjamin Wiegand f6d51e1d25 fix: ensure CellIndicator doesn't directly reference TelephonyCallback
reduces log spam on api <31 due to classloader errors

even just putting the CellSignalListenerWrapper in its own file isn't enough since it extends TelephonyCallback and causes it to be loaded
2026-03-09 15:50:56 -07:00
Benjamin Wiegand 1a15af0167 fix: change pendingUpdate to true on init
the initial icon state is invalid
2026-03-09 15:20:44 -07:00
Benjamin Wiegand 4ebc5f8703 fix: android 8 doesn't support rm -v 2026-03-09 15:12:26 -07:00
Benjamin Wiegand 23b3efbb98 feat: network indicators
both wifi and mobile data. these may not 100% match the status bar, but should end up being pretty close.
2026-03-09 14:37:02 -07:00
Benjamin Wiegand 44ac8ab588 refactor: clean up BatteryIndicator 2026-03-09 14:28:20 -07:00
Benjamin Wiegand 15dffd6a6a fix: use string resource for preference category name 2026-03-06 13:04:11 -08:00
Benjamin Wiegand 569ed45d89 fix: call appDrawer.destroy() 2026-03-05 16:38:11 -08:00
Benjamin Wiegand 6362d29ca2 feat: add battery indicator 2026-03-05 16:37:10 -08:00
Benjamin Wiegand abc7615452 fix: move notification permission request to main activity 2026-03-05 11:06:32 -08:00
Benjamin Wiegand 85bf35dd6b feat: add back buttons to UI 2026-03-05 11:04:52 -08:00
Benjamin Wiegand 193e1355bc feat: add car icon 2026-03-05 11:03:57 -08:00