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