mirror of
https://github.com/kavishdevar/librepods.git
synced 2026-03-20 21:21:29 +00:00
android: multidevice capabilites and accessiblity features (and "liquid glass") (#202)
many thanks to @rithvikvibhu for help with the hearing aids feature adds: hearing aid two-device connection new UI transparency mode customization commits: * android: add accessibility stuff adds option for customizing transparency mode, amplification, tone, etc. * docs: update transparency mode format * android: don't 'start' service every time MainActivity is launched * android: add basic multidevice capabilities use at your own risk, may or may not work * android: clean up a bit of AI gen'd code * android: clean up main service and remove minimum API on head gestures * android: clean up a lot of stuff * android: implement the accessiblity settings page * android: add EQ settings for phone and media * android: add toggle for DID hook * docs: add 'has ownership' control cmd * android: fix balance NaN error when amplification L/R is both zero * android: bring back some accessiblity settings and add listeners for all config * android: add header to ATTManager * android: use device name sent by the connected device in island * android: fix track color in tone volume * android: remove unused composable * android: update eq sliders style * android: fix text color in selectors * android: add delay before starting head tracking again * android: add a few options ik not the right branch/pr but, eh, i am not merging this hook until i test further, and if i don't merge, conflicts, a lot of 'em * android: a small ui fix * docs: a few more control cmds * android: add microphone setting also, un-hardcoded strings, and updated text sizes * android: improve dropdowns ai generated * android: move attmanager to service to avoid trying to connect multiple times * android: add ui for hearing stuff mostly copied from the transparency settings, which are now updated to match ios <26 ui * android: add media assist options in hearing aid ui only * android: add hearing aid adjustments * android: liquidglass sliders * android: improve liquid glass sliders * android: little more liquid glass * android: fix hearing aid parsing * android: remove customdeviceactivity from manifest * android: remove unused strings * android: small ui tweaks * android: a very big commit refactoring ui, mostly * android: move padding to StyledScaffold's content because haze needs it * android: revert accidental capitalization on toggle label * android: update usages for toggle * android: liquidglass, maybe? the switch and icon button took quite a while. i forgot the order of modifiers matters! * remove bleonly mode, use CAPod instead * remove bleonly mode, use CAPod instead * android: fix switch styling * android: remove fade from transition * android: add A16's new bluetooth identifier for log collection just why... * android: fix crash in head gestures screen * android: show head gestures status in the navigation button * android: don't crash if att not available * android: use lazycolumn in airpods settings for better performance and navigation transitions * android: fix text color in troubshooting button and pressandhold settings * android: bring back original confirmation dialog too lazy to fix/implement properly the glassy one * android: prevent hearing aid turning off itself * android: hide media assist, not implemented * docs: update README with new features * docs: add demo video * docs: add new screenshots for android * docs: update demo video position * docs: app3 compatibility * docs: new control cmds '25 (again) * docs: change section title in control cmd doc Updated section title from 'Control Commands' to 'Identifiers and details'. * android: ui tweaks * android: update styled slider thumb * android: add accessiblity service for camera control * android: add camera control, finally i got too lazy to find out how to listen to app openings earlier, wasn't too hard * android: add option to change camera app id * android: not use relative paths for executing commands i hope it's the same across all skins * android: fix transparency and noise cancellation flags huh... was it always like this? * android: revert to using relative paths for su compatibility issues with magisk * android: bump version * android: don't crash if self MAC is not available * android: remove unused LOCAL_ADDRESS permission * android: add opensource licenses should've done this a long time ago! * android: move navigation button to activity level * android: update animation time on switch tap * android: implement setting hearing test results * android: update title in hearing test screen * docs: add screenshot for hearing test * android: fix haze for dialog when enabling hearing aid * android: parse device info * android: add support for various models still need to update images or find a way to fetch from apple's cdn * android: fix a2dp connection * android: remove stray eq config in accessibility settings * android: improve connection handling * android: add a (very important) support dialog to not be invasive, this only shows up once, and never again. * docs: add note for DID hook on android
This commit is contained in:
10
android/app/src/main/res/drawable/app_widget_background.xml
Normal file
10
android/app/src/main/res/drawable/app_widget_background.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Background for widgets to make the rounded corners based on the
|
||||
appWidgetRadius attribute value
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<corners android:radius="?attr/appWidgetRadius" />
|
||||
<solid android:color="?android:attr/colorBackground" />
|
||||
</shape>
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Background for views inside widgets to make the rounded corners based on the
|
||||
appWidgetInnerRadius attribute value
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="?attr/appWidgetInnerRadius" />
|
||||
<solid android:color="?android:attr/colorAccent" />
|
||||
</shape>
|
||||
11
android/app/src/main/res/drawable/ic_undo.xml
Normal file
11
android/app/src/main/res/drawable/ic_undo.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:autoMirrored="true">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M280,760L280,680L564,680Q627,680 673.5,640Q720,600 720,540Q720,480 673.5,440Q627,400 564,400L312,400L416,504L360,560L160,360L360,160L416,216L312,320L564,320Q661,320 730.5,383Q800,446 800,540Q800,634 730.5,697Q661,760 564,760L280,760Z"/>
|
||||
</vector>
|
||||
5
android/app/src/main/res/drawable/ic_undo_button_bg.xml
Normal file
5
android/app/src/main/res/drawable/ic_undo_button_bg.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<size android:width="64dp" android:height="64dp" />
|
||||
<solid android:color="#2F2F2F" />
|
||||
</shape>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 63 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 605 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 55 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 33 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 35 KiB |
Binary file not shown.
@@ -12,7 +12,9 @@
|
||||
android:orientation="horizontal"
|
||||
android:outlineAmbientShadowColor="#4EFFFFFF"
|
||||
android:outlineSpotShadowColor="#4EFFFFFF"
|
||||
android:padding="8dp">
|
||||
android:padding="8dp"
|
||||
android:clipToPadding="false"
|
||||
android:clipChildren="false">
|
||||
|
||||
<VideoView
|
||||
android:id="@+id/island_video_view"
|
||||
@@ -66,9 +68,11 @@
|
||||
android:id="@+id/island_battery_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center">
|
||||
android:gravity="center"
|
||||
android:clipChildren="false">
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/island_battery_bg"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:layout_width="84dp"
|
||||
android:layout_height="84dp"
|
||||
@@ -101,5 +105,20 @@
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
tools:ignore="HardcodedText" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/island_action_button"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_gravity="center"
|
||||
android:translationX="-12dp"
|
||||
android:background="@drawable/ic_undo_button_bg"
|
||||
android:contentDescription="@string/undo"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/ic_undo"
|
||||
android:tint="@android:color/white"
|
||||
android:elevation="8dp"
|
||||
android:translationZ="8dp"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -4,12 +4,14 @@
|
||||
android:id="@+id/noise_control_widget"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:theme="@style/Theme.LibrePods.AppWidgetContainer">
|
||||
android:theme="@style/Theme.LibrePods.AppWidgetContainer"
|
||||
tools:ignore="ContentDescription,NestedWeights">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@android:id/background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:baselineAligned="false"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
@@ -70,7 +72,8 @@
|
||||
android:shadowRadius="12"
|
||||
android:text="@string/transparency"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="12sp" />
|
||||
android:textSize="12sp"
|
||||
tools:ignore="NestedWeights" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@@ -102,7 +105,8 @@
|
||||
android:shadowRadius="12"
|
||||
android:text="@string/adaptive"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="12sp" />
|
||||
android:textSize="12sp"
|
||||
tools:ignore="NestedWeights" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
android:layout_marginTop="16dp"
|
||||
android:fontFamily="@font/sf_pro"
|
||||
android:gravity="center"
|
||||
android:text="Kavish's AirPods Pro"
|
||||
android:text="AirPods Pro"
|
||||
android:textColor="@color/popup_text"
|
||||
|
||||
android:textSize="28sp"
|
||||
|
||||
6
android/app/src/main/res/mipmap-anydpi/ic_launcher.xml
Normal file
6
android/app/src/main/res/mipmap-anydpi/ic_launcher.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_monochrome" />
|
||||
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
|
||||
</adaptive-icon>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
|
||||
</adaptive-icon>
|
||||
4521
android/app/src/main/res/raw/aboutlibraries.json
Normal file
4521
android/app/src/main/res/raw/aboutlibraries.json
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -1,14 +0,0 @@
|
||||
<resources>
|
||||
|
||||
<style name="Widget.LibrePods.AppWidget.Container" parent="android:Widget">
|
||||
<item name="android:id">@android:id/background</item>
|
||||
<item name="android:padding">?attr/appWidgetPadding</item>
|
||||
<item name="android:background">@drawable/app_widget_background</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.LibrePods.AppWidget.InnerView" parent="android:Widget">
|
||||
<item name="android:padding">?attr/appWidgetPadding</item>
|
||||
<item name="android:background">@drawable/app_widget_inner_view_background</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -1,7 +1,5 @@
|
||||
<resources>
|
||||
<string name="app_name" translatable="false">LibrePods</string>
|
||||
<string name="app_description" translatable="false">让你的 AirPods 摆脱苹果的生态系统。</string>
|
||||
<string name="title_activity_custom_device" translatable="false">GATT 测试</string>
|
||||
<string name="app_widget_description">在主屏幕上即可查看 AirPods 的电池状态!</string>
|
||||
<string name="accessibility">辅助功能</string>
|
||||
<string name="tone_volume">提示音音量</string>
|
||||
@@ -21,13 +19,10 @@
|
||||
<string name="head_gestures">头部手势</string>
|
||||
<string name="left">左耳</string>
|
||||
<string name="right">右耳</string>
|
||||
<string name="adjusts_volume">根据环境调整媒体音量</string>
|
||||
<string name="conversational_awareness">对话感知</string>
|
||||
<string name="conversational_awareness_description">当你开始与他人交谈时,会降低媒体音量并减少背景噪音。</string>
|
||||
<string name="personalized_volume">个性化音量</string>
|
||||
<string name="personalized_volume_description">根据环境自动调整媒体音量。</string>
|
||||
<string name="less_noise">减少噪音</string>
|
||||
<string name="more_noise">增加噪音</string>
|
||||
<string name="noise_cancellation_single_airpod">单只 AirPod 主动降噪</string>
|
||||
<string name="noise_cancellation_single_airpod_description">仅佩戴一只 AirPod 时也能开启主动降噪。</string>
|
||||
<string name="volume_control">音量控制</string>
|
||||
|
||||
@@ -1,39 +1,38 @@
|
||||
<resources>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
<string name="app_name" translatable="false">LibrePods</string>
|
||||
<string name="app_description" translatable="false">Liberate your AirPods from Apple\'s ecosystem.</string>
|
||||
<string name="title_activity_custom_device" translatable="false">GATT Testing</string>
|
||||
<string name="app_description">Liberate your AirPods from Apple\'s ecosystem.</string>
|
||||
<string name="app_widget_description">See your AirPods battery status right from your home screen!</string>
|
||||
<string name="accessibility">Accessibility</string>
|
||||
<string name="tone_volume">Tone Volume</string>
|
||||
<string name="tone_volume_description">Adjust the tone volume of sound effects played by AirPods.</string>
|
||||
<string name="audio">Audio</string>
|
||||
<string name="adaptive_audio">Adaptive Audio</string>
|
||||
<string name="customize_adaptive_audio">Customize Adaptive Audio</string>
|
||||
<string name="adaptive_audio_description">Adaptive audio dynamically responds to your environment and cancels or allows external noise. You can customize Adaptive Audio to allow more or less noise.</string>
|
||||
<string name="buds">Buds</string>
|
||||
<string name="case_alt">Case</string>
|
||||
<string name="test">Test</string>
|
||||
<string name="name">Name</string>
|
||||
<string name="noise_control">Noise Control</string>
|
||||
<string name="noise_control">Listening Mode</string>
|
||||
<string name="off">Off</string>
|
||||
<string name="transparency">Transparency</string>
|
||||
<string name="adaptive">Adaptive</string>
|
||||
<string name="noise_cancellation">Noise Cancellation</string>
|
||||
<string name="press_and_hold_airpods">Press and Hold AirPods</string>
|
||||
<string name="press_and_hold_noise_control_description">Press and hold the stem to cycle between the selected listening modes.</string>
|
||||
<string name="head_gestures">Head Gestures</string>
|
||||
<string name="left">Left</string>
|
||||
<string name="right">Right</string>
|
||||
<string name="adjusts_volume">Adjusts the volume of media in response to your environment</string>
|
||||
<string name="conversational_awareness">Conversational Awareness</string>
|
||||
<string name="conversational_awareness_description">Lowers media volume and reduces background noise when you start speaking to other people.</string>
|
||||
<string name="personalized_volume">Personalized Volume</string>
|
||||
<string name="personalized_volume_description">Adjusts the volume of media in response to your environment.</string>
|
||||
<string name="less_noise">Less Noise</string>
|
||||
<string name="more_noise">More Noise</string>
|
||||
<string name="noise_cancellation_single_airpod">Noise Cancellation with Single AirPod</string>
|
||||
<string name="noise_cancellation_single_airpod_description">Allow AirPods to be put in noise cancellation mode when only one AirPods is in your ear.</string>
|
||||
<string name="noise_cancellation_single_airpod_description">Allow AirPods to be put in noise cancellation mode when only one AirPod is in your ear.</string>
|
||||
<string name="volume_control">Volume Control</string>
|
||||
<string name="volume_control_description">Adjust the volume by swiping up or down on the sensor located on the AirPods Pro stem.</string>
|
||||
<string name="airpods_not_connected">AirPods not connected</string>
|
||||
<string name="airpods_not_connected_description">Please connect your AirPods to access settings. If you\'re stuck here, then try reopening the app again after closing it from the recents.\n(DO NOT KILL THE APP!)</string>
|
||||
<string name="airpods_not_connected_description">Please connect your AirPods to access settings.</string>
|
||||
<string name="back">Back</string>
|
||||
<string name="app_settings">Customizations</string>
|
||||
<string name="relative_conversational_awareness_volume">Relative volume</string>
|
||||
@@ -45,8 +44,10 @@
|
||||
<string name="noise_control_widget_description">Control Noise Control Mode directly from your Home Screen.</string>
|
||||
<string name="island_connected_text">Connected</string>
|
||||
<string name="island_connected_remote_text">Connected to Linux</string>
|
||||
<string name="island_taking_over_text">Moved to phone</string>
|
||||
<string name="island_taking_over_text">Connected</string>
|
||||
<string name="island_moved_to_remote_text">Moved to Linux</string>
|
||||
<string name="island_moved_to_other_device_text">Moved to %1$s</string>
|
||||
<string name="island_moved_to_other_device_reversed_text">Reconnect from notification</string>
|
||||
<string name="head_tracking">Head Tracking</string>
|
||||
<string name="head_gestures_details">Nod to answer calls, and shake your head to decline.</string>
|
||||
<string name="general_settings_header">General</string>
|
||||
@@ -79,4 +80,134 @@
|
||||
<string name="takeover_ringing_call_desc">Your phone starts ringing</string>
|
||||
<string name="takeover_media_start">Starting media playback</string>
|
||||
<string name="takeover_media_start_desc">Your phone starts playing media</string>
|
||||
<string name="undo">Undo</string>
|
||||
<string name="customize_transparency_mode_description">You can customize Transparency mode for your AirPods Pro to help you hear what\'s around you.</string>
|
||||
<string name="loud_sound_reduction_description">Loud Sound Reduction can actively reduce your exposure to loud environmental noises when in Transparency and Adaptive mode. Loud Sound Reduction is not active in Off mode.</string>
|
||||
<string name="loud_sound_reduction">Loud Sound Reduction</string>
|
||||
<string name="call_controls">Call Controls</string>
|
||||
<string name="automatically_connect">Connect to this device automatically</string>
|
||||
<string name="automatically_connect_description">When enabled, AirPods will try to connect to this device automatically. Else, they will try to autoconnect only when last connected.</string>
|
||||
<string name="sleep_detection">Pause media when falling asleep</string>
|
||||
<string name="off_listening_mode">Off Listening Mode</string>
|
||||
<string name="off_listening_mode_description">When this is on, AirPods listening modes will include an Off option. Loud sound levels are not reduced when the listening mode is set to Off.</string>
|
||||
<string name="microphone">Microphone</string>
|
||||
<string name="microphone_mode">Microphone Mode</string>
|
||||
<string name="microphone_automatic">Automatic</string>
|
||||
<string name="microphone_always_right">Always Right</string>
|
||||
<string name="microphone_always_left">Always Left</string>
|
||||
<string name="answer_call">Answer call</string>
|
||||
<string name="mute_unmute">Mute/Unmute</string>
|
||||
<string name="hang_up">Hang Up</string>
|
||||
<string name="press_once">Press Once</string>
|
||||
<string name="press_twice">Press Twice</string>
|
||||
<string name="hearing_aid">Hearing Aid</string>
|
||||
<string name="adjustments">Adjustments</string>
|
||||
<string name="swipe_to_control_amplification">Swipe to control amplification</string>
|
||||
<string name="swipe_amplification_description">When in Transparency and no media is playing, swipe up and down on the Touch controls of your AirPods Pro to increase or decrease the amplification of environmental sounds.</string>
|
||||
<string name="transparency_mode">Transparency Mode</string>
|
||||
<string name="customize_transparency_mode">Customize Transparency Mode</string>
|
||||
<string name="press_speed">Press Speed</string>
|
||||
<string name="press_speed_description">Adjust the speed required to press two or three times on your AirPods.</string>
|
||||
<string name="press_and_hold_duration">Press and Hold Duration</string>
|
||||
<string name="press_and_hold_duration_description">Adjust the duration required to press and hold on your AirPods.</string>
|
||||
<string name="volume_swipe_speed">Volume Swipe Speed</string>
|
||||
<string name="volume_swipe_speed_description">To prevent unintended volume adjustments, select preferred wait time between swipes.</string>
|
||||
<string name="equalizer">Equalizer</string>
|
||||
<string name="apply_eq_to">Apply EQ to</string>
|
||||
<string name="phone">Phone</string>
|
||||
<string name="media">Media</string>
|
||||
<string name="band_label">Band %d</string>
|
||||
<string name="default_option">Default</string>
|
||||
<string name="slower">Slower</string>
|
||||
<string name="slowest">Slowest</string>
|
||||
<string name="longer">Longer</string>
|
||||
<string name="longest">Longest</string>
|
||||
<string name="darker">Darker</string>
|
||||
<string name="brighter">Brighter</string>
|
||||
<string name="less">Less</string>
|
||||
<string name="more">More</string>
|
||||
<string name="amplification">Amplification</string>
|
||||
<string name="balance">Balance</string>
|
||||
<string name="tone">Tone</string>
|
||||
<string name="ambient_noise_reduction">Ambient Noise Reduction</string>
|
||||
<string name="conversation_boost">Conversation Boost</string>
|
||||
<string name="conversation_boost_description">Conversation Boost focuses your AirPods Pro on the person talking in front of you, making it easier to hear in a face-to-face conversation.</string>
|
||||
<string name="hearing_aid_description">AirPods can use the results of a hearing test to make adjustments that improve the clarity of voices and sounds around you.\n\nHearing Aid is only intended for people with perceived mild to moderate hearing loss.</string>
|
||||
<string name="media_assist">Media Assist</string>
|
||||
<string name="media_assist_description">AirPods Pro can use the results of a hearing test to make adjustments that improve the clarity of music, video, and calls.</string>
|
||||
<string name="adjust_media">Adjust Music and Video</string>
|
||||
<string name="adjust_calls">Adjust Calls</string>
|
||||
<string name="widget">Widget</string>
|
||||
<string name="show_phone_battery_in_widget">Show phone battery in widget</string>
|
||||
<string name="show_phone_battery_in_widget_description">Display your phone\'s battery level in the widget alongside AirPods battery</string>
|
||||
<string name="conversational_awareness_volume">Conversational Awareness Volume</string>
|
||||
<string name="quick_settings_tile">Quick Settings Tile</string>
|
||||
<string name="open_dialog_for_controlling">Open dialog for controlling</string>
|
||||
<string name="open_dialog_for_controlling_description">If disabled, clicking on the QS will cycle through modes. If enabled, it will show a dialog for controlling noise control mode and conversational awareness</string>
|
||||
<string name="disconnect_when_not_wearing">Disconnect AirPods when not wearing</string>
|
||||
<string name="disconnect_when_not_wearing_description">You will still be able to control them with the app - this just disconnects the audio.</string>
|
||||
<string name="advanced_options">Advanced Options</string>
|
||||
<string name="set_identity_resolving_key">Set Identity Resolving Key (IRK)</string>
|
||||
<string name="set_identity_resolving_key_description">Manually set the IRK value used for resolving BLE random addresses</string>
|
||||
<string name="set_encryption_key">Set Encryption Key</string>
|
||||
<string name="set_encryption_key_description">Manually set the ENC_KEY value used for decrypting BLE advertisements</string>
|
||||
<string name="use_alternate_head_tracking_packets">Use alternate head tracking packets</string>
|
||||
<string name="use_alternate_head_tracking_packets_description">Enable this if head tracking doesn\'t work for you. This sends different data to AirPods for requesting/stopping head tracking data.</string>
|
||||
<string name="act_as_an_apple_device">Act as an Apple device</string>
|
||||
<string name="act_as_an_apple_device_description">Enables multi-device connectivity and Accessibility features like customizing transparency mode (amplification, tone, ambient noise reduction, conversation boost, and EQ)</string>
|
||||
<string name="act_as_an_apple_device_warning">Might be unstable!! A maximum of two devices can be connected to your AirPods. If you are using with an Apple device like an iPad or Mac, then please connect that device first and then your Android.</string>
|
||||
<string name="reset_hook_offset">Reset Hook Offset</string>
|
||||
<string name="reset_hook_offset_description">This will clear the current hook offset and require you to go through the setup process again. Are you sure you want to continue?</string>
|
||||
<string name="reset">Reset</string>
|
||||
<string name="hook_offset_reset_success">Hook offset has been reset. Redirecting to setup...</string>
|
||||
<string name="hook_offset_reset_failure">Failed to reset hook offset</string>
|
||||
<string name="irk_set_success">IRK has been set successfully</string>
|
||||
<string name="encryption_key_set_success">Encryption key has been set successfully</string>
|
||||
<string name="irk_hex_value">IRK Hex Value</string>
|
||||
<string name="enc_key_hex_value">ENC_KEY Hex Value</string>
|
||||
<string name="enter_irk_hex">Enter 16-byte IRK as hex string (32 characters):</string>
|
||||
<string name="enter_enc_key_hex">Enter 16-byte ENC_KEY as hex string (32 characters):</string>
|
||||
<string name="must_be_32_hex_chars">Must be exactly 32 hex characters</string>
|
||||
<string name="error_converting_hex">Error converting hex:</string>
|
||||
<string name="found_offset_restart_bluetooth">Found offset please restart the Bluetooth process</string>
|
||||
<string name="digital_assistant">Digital Assistant</string>
|
||||
<string name="on">On</string>
|
||||
<string name="camera_remote">Camera Remote</string>
|
||||
<string name="camera_control">Camera Control</string>
|
||||
<string name="camera_control_description">Capture a photo, start or stop recording, and more using either Press Once or Press and Hold. When using AirPods for camera actions, if you select Press Once, media control gestures will be unavailable, and if you select Press and Hold, listening mode and Digital Assistant gestures will be unavailable.</string>
|
||||
<string name="camera_control_app_description">Set a custom app package for camera detection</string>
|
||||
<string name="set_custom_camera_package">Set Custom Camera appid</string>
|
||||
<string name="enter_custom_camera_package">Enter the application id of the camera app:</string>
|
||||
<string name="custom_camera_package">Custom Camera appid</string>
|
||||
<string name="custom_camera_package_set_success">Custom camera appid set successfully</string>
|
||||
<string name="app_listener_service_label">Camera listener</string>
|
||||
<string name="app_listener_service_description">Listener service for LibrePods to detect when the camera is active to activate camera control on AirPods.</string>
|
||||
<string name="open_source_licenses">Open Source Licenses</string>
|
||||
<string name="hearing_test">Update Hearing Test</string>
|
||||
<string name="update_hearing_test">Update Hearing Test Result</string>
|
||||
<string name="att_manager_is_null_try_reconnecting">ATT Manager is null, Try reconnecting.</string>
|
||||
<string name="permissions_required">The following permissions are required to use the app. Please grant them to continue.</string>
|
||||
<string name="shake_your_head_or_nod">Shake your head or nod!</string>
|
||||
<string name="root_access_required">Root Access Required</string>
|
||||
<string name="this_app_needs_root_access_to_hook_onto_the_bluetooth_library">This app needs root access to hook onto the Bluetooth library</string>
|
||||
<string name="root_access_denied">Root access was denied. Please grant root permissions.</string>
|
||||
<string name="troubleshooting_steps">Troubleshooting Steps</string>
|
||||
<string name="hearing_test_value_instruction">Please enter the loss values in dbHL</string>
|
||||
<string name="about">About</string>
|
||||
<string name="model_name">Model Name</string>
|
||||
<string name="model_number">Model Number</string>
|
||||
<string name="serial_number">Serial Number</string>
|
||||
<string name="version">Version</string>
|
||||
<string name="hearing_health">Hearing Health</string>
|
||||
<string name="hearing_protection">Hearing Protection</string>
|
||||
<string name="workspace_use">Workspace Use</string>
|
||||
<string name="ppe">EN 352 Protection</string>
|
||||
<string name="workspace_use_description">EN 352 Protection limits the maximum level of media to 82 dBA, and meets applicable EN 352 Standard requirements for personal hearing protection.</string>
|
||||
<string name="environmental_noise">Environmental Noise</string>
|
||||
<string name="reconnect_to_last_device">Reconnect to last connected device</string>
|
||||
<string name="disconnect">Disconnect</string>
|
||||
<string name="support_me">Support me</string>
|
||||
<string name="never_show_again">Never show again</string>
|
||||
<string name="support_dialog_description">I recently lost my left AirPod. If you\'ve found LibrePods useful, consider supporting me on GitHub Sponsors so I can buy a replacement and continue working on this project- even a little amount goes a long way. Thank you for your support!</string>
|
||||
<string name="support_librepods">Support LibrePods</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
<resources>
|
||||
|
||||
<style name="Widget.LibrePods.AppWidget.Container" parent="android:Widget">
|
||||
<item name="android:id">@android:id/background</item>
|
||||
<item name="android:background">?android:attr/colorBackground</item>
|
||||
</style>
|
||||
<style name="Widget.LibrePods.AppWidget.Container" parent="android:Widget"></style>
|
||||
|
||||
<style name="Widget.LibrePods.AppWidget.InnerView" parent="android:Widget">
|
||||
<item name="android:background">?android:attr/colorBackground</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
</style>
|
||||
<style name="Widget.LibrePods.AppWidget.InnerView" parent="android:Widget"></style>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:accessibilityEventTypes="typeWindowStateChanged"
|
||||
android:accessibilityFeedbackType="feedbackGeneric"
|
||||
android:notificationTimeout="50"
|
||||
android:canRetrieveWindowContent="false"
|
||||
android:label="@string/app_listener_service_label"
|
||||
android:description="@string/app_listener_service_description"
|
||||
android:settingsActivity="me.kavishdevar.librepods.MainActivity"
|
||||
android:accessibilityFlags="flagReportViewIds"/>
|
||||
Reference in New Issue
Block a user