-
-
Notifications
You must be signed in to change notification settings - Fork 49
android: multidevice capabilites and accessiblity features (and "liquid glass") #202
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
base: main
Are you sure you want to change the base?
Conversation
adds option for customizing transparency mode, amplification, tone, etc.
use at your own risk, may or may not work
android/app/src/main/java/me/kavishdevar/librepods/utils/RadareOffsetFinder.kt
Fixed
Show fixed
Hide fixed
android/app/src/main/java/me/kavishdevar/librepods/utils/RadareOffsetFinder.kt
Fixed
Show fixed
Hide fixed
This comment was marked as outdated.
This comment was marked as outdated.
android/app/src/main/java/me/kavishdevar/librepods/utils/RadareOffsetFinder.kt
Fixed
Show fixed
Hide fixed
android/app/src/main/java/me/kavishdevar/librepods/utils/RadareOffsetFinder.kt
Fixed
Show fixed
Hide fixed
android/app/src/main/java/me/kavishdevar/librepods/utils/RadareOffsetFinder.kt
Fixed
Show fixed
Hide fixed
android/app/src/main/java/me/kavishdevar/librepods/utils/RadareOffsetFinder.kt
Fixed
Show fixed
Hide fixed
the work done here is amazing, i hope the pros 3 keep the same packet format |
thanks!
Hopefully, Apple will not go all the way to change their entire protocol that they've been using over so many years Have you been able to try this build out, @Leclowndu93150? The accessibility fetures and stuff? I'm waiting for a few more days just to test it out myself before merging it. |
not yet not yet ! i was looking for this kind of apps cuz i'm getting my first ever airpods (pros 3) on the 19th, i never had an apple product before so i'll see how it goes. but i'd be happy to help ! |
pfft the store is late, tomorow for sure |
e42db82
to
b43e5f7
Compare
Hmm, I've followed the Readme and there was no mention of installing as system. Also, if this is a requirement, I'd suggest to create a Magisk module for installing the app systemlessly. I don't remember if https://github.com/james34602/JamesDSPManager is privileged, but either way it could be an example of what I mean and how to achieve that (not sure I have the time myself to contribute).
Oh, this must be it, as I had the "Act as Apple device" enabled.
Then what I've mentioned is a Media Assist feature I think. Anyway, to me it looks like this: ![]() ![]() So the Hearing Aid is on top, and lower there is this option of using Hearing Test results. This test can only be done with the AirPods Pro 2 and Pro 3. Then, the audio is adjusted accordingly to compensate for this I assume.
Perhaps it's just the environment I was in when I tested this feature. Also using iPhone I couldn't recognize a noticeable difference.
I had this enabled.
Somehow I've never seen it when moving from Android to iPhone, so I'd say to me it's always the case.
That's cool, then! Glad it's something that can be fixed.
Thanks in advance! I'd be grateful for that. However, I'd understand if it'll take longer to implement since you're all doing this in the free time, so I think the Linux app as-is is already good enough. |
The zip in the release is a root module for that (in v1.0.0-rc.4). I had forgotten to add this to the readme. Sorry 'bout that. I'm gonna improve the README when I release with this merged.
Ah, I don't think that's the Media Assist feature (correct me if i'm wrong). The amplification and balance would should up under Adjustments once you enable Hearing Aid. What you're seeing is from the hearing test (I can't be bothered to be deal with accurate testing using AirPods, instead I'll just provide adding audiogram results and using it for hearing aid like Apple already provides).
The EQ that's customizable from the Accessibility settings is the same as what's going to be sent when using media assist. I assumed that hearing test results would be used but it apparently doesn't. From the screenshots I got from someone (I am in a region where the feature is not supported), Here's a list of things I know:
I've put up a very quickly made demo video in the README. Currently the LibrePods presents itself as "Android" which is unfortunately not used by iOS/macOS. It just checks for "Mac" or "iPad" and defaults to iPhone. I guess that iOS doesn't show the UI unless it's specifically Mac/iPad.
Interesting, maybe I can use that. Apparently there are attributes to the media that's played too. I didn't know that. It is indeed possible tell interaction sounds and media apart.
It's not much effort to make it customizable, so why not! |
Updated section title from 'Control Commands' to 'Identifiers and details'.
i got too lazy to find out how to listen to app openings earlier, wasn't too hard
added camera control (got lazy the last time to figure out how to listen to app changes, too lazy to fix merge conflicts later, so adding it with this PR). (or maybe idk how to use git ¯\_(ツ)_/¯) |
i hope it's the same across all skins
just gonna update the "control center" with the new design, and add the hearing aid amplification control and probably going to be ready for the next release. |
huh... was it always like this?
compatibility issues with magisk
android/app/src/main/java/me/kavishdevar/librepods/utils/RadareOffsetFinder.kt
Dismissed
Show dismissed
Hide dismissed
android/app/src/main/java/me/kavishdevar/librepods/utils/RadareOffsetFinder.kt
Dismissed
Show dismissed
Hide dismissed
I could give this MR another go this week perhaps. I'll use the root module from the nightly build you published yesterday. |
b6fb58e
to
0e0af35
Compare
I've realised that the latest nightly is not packaged as a magisk module, so I've used the zip from v0.1.0-rc.4 and replaced the APK binary with the nightly. For starters, there's bootloop when flashing the magisk module on my A16 device:
So I've changed the XML permission as follows which fixes it: <?xml version="1.0" encoding="utf-8"?>
<permissions>
<privapp-permissions package="me.kavishdevar.librepods">
<permission name="android.permission.BLUETOOTH_PRIVILEGED"/>
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
<permission name="android.permission.LOCAL_MAC_ADDRESS"/>
<permission name="android.permission.READ_PHONE_STATE"/>
</privapp-permissions>
</permissions> The
I think this should be correct afaik.
I think this is also correct.
I've enabled the iPhone feature. Anyway, what I meant is that LibrePods doesn't show the popup when the control goes to the iPhone. The iPhone correctly shows the popup when the control goes to LibrePods and Android. This was before. Now with the nightly and with the correct permissions set by the root module, I see the popup of LibrePods. However, I'm experiencing a new issue. The switch happens Android -> iPhone, but then it doesn't come back iPhone -> Android anymore. I can still change the settings on LibrePods, e.g., enable noise cancellation, but there's no audio. It's worth noting that the system bluetooth widget shows no connected device, while LibrePods shows in-app the AirPods but does send a notification for disconnected AirPods. Lastly, I can enable now Hearing Aid without crashing, but the settings don't work at all, for example amplification. When I switch to iPhone I can see that hearing aid was enabled, so something did happen (I couldn't tell the difference just by listening, perhaps cause it was on default amplification settings). Recap:
I haven't retested the transparency and EQs. |
I'll attach a logcat here to help narrow down other remaining issues. logcat_2025-10-04_15-20-08.txt A few things to note:
|
The app now supports
(Accessibility features needs writing a ATTManager because I'd love to have more direct control over the connection, WIP)doneHow?
After hours of digging, I finally found that these things require the vendorId of the Device Identification Profile to be set to Apple's.
/etc/bluetooth/main.conf
file and setting the DeviceID parameter.oh, and i tried android studio's code inspection and cleaned up the code a little