178 Commits
Author SHA1 Message Date
Benjamin Wiegand ea5f3158c6 release: v0.2.0 v0.2.0 2026-07-08 17:54:24 -07:00
Benjamin Wiegand f7411f143b fix: enable edge2edge in log recordings activity 2026-07-08 17:39:27 -07:00
Benjamin Wiegand 80e5e2810b fix: use MaterialSwitch in preferences 2026-07-08 17:31:28 -07:00
Benjamin Wiegand b22631c572 fix: use MaterialSwitch 2026-07-08 17:15:17 -07:00
Benjamin Wiegand f450d86381 fix: use MaterialToolbar for action bar
fixes issues with the colors and theme
2026-07-08 17:14:41 -07:00
Benjamin Wiegand 8484115386 feat: add activity for log file management
now you can directly export, open, and delete logs without a computer, root file manager, shell access, or other unnecessary things
2026-07-08 16:57:29 -07:00
Benjamin Wiegand b3e455beb8 feat: use external data dir for log recordings
makes it easily accessible over adb and via some file managers without root
2026-07-08 13:18:46 -07:00
Benjamin Wiegand c823896f19 feat: add default log file name 2026-07-08 12:49:05 -07:00
Benjamin Wiegand e0b9e03231 fix: add strings for log recording 2026-07-08 12:48:35 -07:00
Benjamin Wiegand 366e4cbc66 feat: move LogcatReader instance to service
log recordings can now continue when the debug activity is destroyed
2026-07-08 12:23:38 -07:00
Benjamin Wiegand 823566e330 fix: catch errors while starting screen wake activity 2026-07-08 10:28:51 -07:00
Benjamin Wiegand 08694695e6 feat: add ability to keep the screen awake/interactive while connected
display sleep can cause several issues at the moment, and the behavior is not consistent across devices.

such issues include but are not limited to:
- no touch input
- blank projection display
- power savings destroying performance or throttling refresh rate
- activities falling off the projection display
2026-07-07 14:35:47 -07:00
Benjamin Wiegand 194faf36fe fix: hide action bar in invisible theme 2026-07-07 14:15:37 -07:00
Benjamin Wiegand a39b58e8b9 fix: move frame rate optimization preference to compatibility section 2026-07-07 14:15:15 -07:00
Benjamin Wiegand c5962c8d65 fix: catch unexpected errors in connection loop
previously, failed assertions would crash the app
2026-07-06 13:53:57 -07:00
Benjamin Wiegand 639ce82a13 refactor: remove todo
the error gets handled in the ProjectionService
2026-07-06 13:53:11 -07:00
Benjamin Wiegand dba9aa64be feat: add more user friendly error message handling 2026-07-02 14:18:54 -07:00
Benjamin Wiegand 9fd1db0bdb fix: force launch on current display in virtual activity launcher
this avoids the app opening on the phone display when the app can't open within the virtual activity display
2026-06-30 13:45:05 -07:00
Benjamin Wiegand 7cc6755b51 fix: don't use virtual activity launcher without VIRTUAL_DISPLAY_FLAG_TRUSTED
it doesn't work without the trusted flag due to permissions

I may try to connect privd in the virtual activity launcher to fix this, and also add a setting to disable the launcher.

for now, it seems to work reliably on most(?) modern devices
2026-06-30 13:41:34 -07:00
Benjamin Wiegand 1fc06a2635 fix: catch exceptions from input injection
this probably won't do much, but it doesn't hurt
2026-06-30 13:33:49 -07:00
Benjamin Wiegand fcaa65baef fix: do input injection synchronously
rapid keypresses were crashing InputManager
2026-06-30 13:32:59 -07:00
Benjamin Wiegand 1ae37d9eef fix: show correct number of split-screen apps in task drop placeholder 2026-06-27 15:14:22 -07:00
Benjamin Wiegand 5ce6bc1857 fix: only use dynamicOpenSingle() when opening app from the app drawer
continuing on the UX improvements, this is another pain point.

previously if I have my map and music in split-screen but only want to use one or the other, I would have to open the split-screen task before selecting one from the app drawer. the cost of messing this up is multiple extra taps and feels annoying.

now, it will always open the selected app in a task by itself. if I want to go to the split screen, I can just select the split-screen task from the dock, which saves an extra tap or two anyway.
2026-06-27 14:44:03 -07:00
Benjamin Wiegand 1ab27e0ca0 fix: don't re-order open tasks and instead make them draggable
after using it a fair bit I've noticed that re-ordering the open task list is more annoying than having to move them myself.

this is especially annoying due to a habit I've developed of double-tapping an icon to bring up the task operations in order to close it. when it re-orders, it breaks this workflow.

additionally, it might be undesirable to move buttons on the screen while the user is driving.

this makes some changes to the behavior of task ordering:
- pinned items can be unpinned to any location
- non-pinned items can be re-ordered to any location
- selecting a non-pinned item no longer brings it to the front of the task list
- new non-pinned tasks are appended to the end of the list
2026-06-27 14:35:36 -07:00
Benjamin Wiegand c4f2689705 feat: pause media on projection suspend 2026-06-27 13:50:33 -07:00
Benjamin Wiegand 8a3a3875e1 fix: use AudioFocusRequest for tts audio ducking
embarrassingly, there was an api for this
2026-06-27 13:49:55 -07:00
Benjamin Wiegand 6fb35c449c fix: try to launch VirtualActivity after the resolution is determined 2026-06-26 21:16:40 -07:00
Benjamin Wiegand b368ca3cdd feat: add activity launcher for virtual activity displays
this is nice for several reasons:
- it adds a loading screen in place of what would be a broken/frozen frame buffer
- it adds a way to easily re-launch an activity that crashes
- the same applies when pressing back too many times and closing the activity
- it also allows a relatively seamless transition for apps to go from the car display to the phone and back
- in the future, I can add a callback to VirtualActivity to hide the splash screen after this activity renders its first frame to make loading even more seamless
2026-06-26 21:15:55 -07:00
Benjamin Wiegand 3a4cba374a feat: pause media audio while playing notification tts 2026-06-26 12:31:24 -07:00
Benjamin Wiegand c18ee8bcce feat: allow answering incoming calls
there is no in-call ui and likely won't be for a while.

even this basic implementation will probably break if you receive two calls that ring at the same time.
2026-06-24 18:44:25 -07:00
Benjamin Wiegand 3165a12f54 fix: use headunit name instead of car model for friendly name
this is the one Android Auto appears to use

also car model is "027" on my test stereo
2026-06-24 11:33:24 -07:00
Benjamin Wiegand e928dcbac9 fix: use VOICE_DOWNLINK for phone audio capture
avoids playing back the microphone through the speakers during calls
2026-06-24 11:31:37 -07:00
Benjamin Wiegand 291fe3cb35 release: v0.1.0 v0.1.0 2026-06-23 13:27:50 -07:00
Benjamin Wiegand 3ef6fc5c12 feat: add switch to auto-scroll logs 2026-06-23 13:25:12 -07:00
Benjamin Wiegand 2610bc15bc fix: only show bluetooth error notification on connection failure 2026-06-23 13:09:22 -07:00
Benjamin Wiegand 2ed46ecd50 fix: request shizuku permission during startup instead of silently failing 2026-06-23 12:57:08 -07:00
Benjamin Wiegand 2771c84a1b fix: access modifier 2026-06-23 12:46:46 -07:00
Benjamin Wiegand 97631d0529 fix: log encoded certificate
the certificate chain fails to log very often
2026-06-23 12:45:17 -07:00
Benjamin Wiegand 5db0576f5d fix: handle wifi version request
fixes compatibility with AAWireless dongle
2026-06-23 12:43:52 -07:00
Benjamin Wiegand d97328536a fix: handle virtual display / audio capture failure from privd 2026-06-23 12:38:03 -07:00
Benjamin Wiegand 97b85798a6 feat: capture phone audio
afaik there's no way to do this without elevated privileges
2026-06-20 16:08:28 -07:00
Benjamin Wiegand f3e7dcbb5f fix: do permission check in main activity onResume 2026-06-20 15:38:43 -07:00
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