mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Adds support for headphones Redmi Buds 3 Pro
This commit is contained in:
committed by
José Rebelo
parent
1dc14551a6
commit
d5af0da3f9
+44
@@ -0,0 +1,44 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmibuds;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettings;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSpecificSettingsCustomizer;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.redmibuds.RedmiBuds3ProDeviceSupport;
|
||||
|
||||
public class RedmiBuds3ProCoordinator extends AbstractRedmiBudsCoordinator {
|
||||
@Override
|
||||
public int getDeviceNameResource() {
|
||||
return R.string.devicetype_redmi_buds_3_pro;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("Redmi Buds 3 Pro");
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Class<? extends DeviceSupport> getDeviceSupportClass() {
|
||||
return RedmiBuds3ProDeviceSupport.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) {
|
||||
final DeviceSpecificSettings deviceSpecificSettings = new DeviceSpecificSettings();
|
||||
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_redmibuds3pro_headphones);
|
||||
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_redmibuds3pro_sound);
|
||||
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_redmibuds3pro_gestures);
|
||||
return deviceSpecificSettings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceSpecificSettingsCustomizer getDeviceSpecificSettingsCustomizer(final GBDevice device) {
|
||||
return new RedmiBudsSettingsCustomizer(device);
|
||||
}
|
||||
}
|
||||
@@ -298,6 +298,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.miband9active.MiBand9
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.miband9pro.MiBand9ProCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.miwatch.MiWatchLiteCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.miwatchcolorsport.MiWatchColorSportCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmibuds.RedmiBuds3ProCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmibuds.RedmiBuds4ActiveCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmibuds.RedmiBuds5ProCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmibuds.RedmiBuds6ActiveCoordinator;
|
||||
@@ -376,6 +377,7 @@ public enum DeviceType {
|
||||
MIBAND9PRO(MiBand9ProCoordinator.class),
|
||||
MIWATCHLITE(MiWatchLiteCoordinator.class),
|
||||
MIWATCHCOLORSPORT(MiWatchColorSportCoordinator.class),
|
||||
REDMIBUDS3PRO(RedmiBuds3ProCoordinator.class),
|
||||
REDMIBUDS4ACTIVE(RedmiBuds4ActiveCoordinator.class),
|
||||
REDMIBUDS5PRO(RedmiBuds5ProCoordinator.class),
|
||||
REDMIBUDS6ACTIVE(RedmiBuds6ActiveCoordinator.class),
|
||||
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.redmibuds;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.serial.GBDeviceIoThread;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.serial.GBDeviceProtocol;
|
||||
|
||||
public class RedmiBuds3ProDeviceSupport extends RedmiBudsDeviceSupport {
|
||||
@Override
|
||||
protected GBDeviceProtocol createDeviceProtocol() {
|
||||
return new RedmiBuds3ProProtocol(getDevice());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GBDeviceIoThread createDeviceIOThread() {
|
||||
return new RedmiBudsIOThread(getDevice(), getContext(),
|
||||
(RedmiBuds3ProProtocol) getDeviceProtocol(),
|
||||
RedmiBuds3ProDeviceSupport.this, getBluetoothAdapter());
|
||||
}
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.redmibuds;
|
||||
|
||||
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_REDMI_BUDS_5_PRO_CONTROL_DOUBLE_TAP_LEFT;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_REDMI_BUDS_5_PRO_CONTROL_DOUBLE_TAP_RIGHT;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_REDMI_BUDS_5_PRO_CONTROL_LONG_TAP_MODE_LEFT;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_REDMI_BUDS_5_PRO_CONTROL_LONG_TAP_MODE_RIGHT;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_REDMI_BUDS_5_PRO_CONTROL_TRIPLE_TAP_LEFT;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst.PREF_REDMI_BUDS_5_PRO_CONTROL_TRIPLE_TAP_RIGHT;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.redmibuds.prefs.Configuration;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
|
||||
public class RedmiBuds3ProProtocol extends RedmiBudsProtocol {
|
||||
protected RedmiBuds3ProProtocol(GBDevice device) {
|
||||
super(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decodeGetConfig(byte[] configPayload) {
|
||||
if (configPayload.length < 3)
|
||||
return;
|
||||
|
||||
SharedPreferences preferences = getDevicePrefs().getPreferences();
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
Configuration.Config config = Configuration.Config.fromCode(configPayload[2]);
|
||||
if (config == Configuration.Config.GESTURES) {
|
||||
editor.putString(PREF_REDMI_BUDS_5_PRO_CONTROL_DOUBLE_TAP_LEFT, Integer.toString(configPayload[4]));
|
||||
editor.putString(PREF_REDMI_BUDS_5_PRO_CONTROL_DOUBLE_TAP_RIGHT, Integer.toString(configPayload[5]));
|
||||
|
||||
editor.putString(PREF_REDMI_BUDS_5_PRO_CONTROL_TRIPLE_TAP_LEFT, Integer.toString(configPayload[7]));
|
||||
editor.putString(PREF_REDMI_BUDS_5_PRO_CONTROL_TRIPLE_TAP_RIGHT, Integer.toString(configPayload[8]));
|
||||
|
||||
editor.putString(PREF_REDMI_BUDS_5_PRO_CONTROL_LONG_TAP_MODE_LEFT, Integer.toString(configPayload[10]));
|
||||
editor.putString(PREF_REDMI_BUDS_5_PRO_CONTROL_LONG_TAP_MODE_RIGHT, Integer.toString(configPayload[11]));
|
||||
|
||||
editor.apply();
|
||||
} else {
|
||||
super.decodeGetConfig(configPayload);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3397,6 +3397,44 @@
|
||||
<item>3</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="redmi_buds_3_pro_equalizer_presets_names">
|
||||
<item>@string/redmi_buds_5_pro_equalizer_preset_standard</item>
|
||||
<item>@string/redmi_buds_5_pro_equalizer_preset_treble</item>
|
||||
<item>@string/redmi_buds_5_pro_equalizer_preset_bass</item>
|
||||
<item>@string/redmi_buds_5_pro_equalizer_preset_voice</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="redmi_buds_3_pro_equalizer_presets_values">
|
||||
<item>0</item>
|
||||
<item>6</item>
|
||||
<item>5</item>
|
||||
<item>1</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="redmi_buds_3_pro_noise_cancelling_strength_names">
|
||||
<item>@string/redmi_buds_5_pro_anc_balanced</item>
|
||||
<item>@string/redmi_buds_5_pro_anc_light</item>
|
||||
<item>@string/redmi_buds_5_pro_anc_deep</item>
|
||||
<item>@string/pref_adaptive_noise_cancelling_title</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="redmi_buds_3_pro_noise_cancelling_strength_values">
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
<item>3</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="redmi_buds_3_pro_transparency_strength_names">
|
||||
<item>@string/redmi_buds_5_pro_transparency_regular</item>
|
||||
<item>@string/redmi_buds_5_pro_transparency_voice</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="redmi_buds_3_pro_transparency_strength_values">
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="redmi_buds_5_pro_ambient_sound_control_names">
|
||||
<item>@string/sony_ambient_sound_off</item>
|
||||
<item>@string/sony_ambient_sound_noise_cancelling</item>
|
||||
|
||||
@@ -1941,6 +1941,7 @@
|
||||
<string name="devicetype_xiaomi_watch_lite">Xiaomi Watch Lite</string>
|
||||
<string name="devicetype_redmiwatch3active">Redmi Watch 3 Active</string>
|
||||
<string name="devicetype_redmiwatch3">Redmi Watch 3</string>
|
||||
<string name="devicetype_redmi_buds_3_pro">Redmi Buds 3 Pro</string>
|
||||
<string name="devicetype_redmi_buds_4_active">Redmi Buds 4 Active</string>
|
||||
<string name="devicetype_redmi_buds_5_pro">Redmi Buds 5 Pro</string>
|
||||
<string name="devicetype_redmi_buds_6_active">Redmi Buds 6 Active</string>
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<PreferenceCategory
|
||||
android:key="pref_key_header_redmibuds5pro_system"
|
||||
android:title="@string/pref_header_system">
|
||||
|
||||
<PreferenceScreen
|
||||
android:icon="@drawable/ic_touch"
|
||||
android:key="pref_screen_redmibuds5pro_touch_options"
|
||||
android:persistent="false"
|
||||
android:title="@string/prefs_galaxy_touch_options">
|
||||
|
||||
<PreferenceCategory android:title="@string/double_tap">
|
||||
<ListPreference
|
||||
android:entries="@array/redmi_buds_5_pro_button_function_names"
|
||||
android:entryValues="@array/redmi_buds_5_pro_button_function_values"
|
||||
android:icon="@drawable/ic_filter_2"
|
||||
android:defaultValue="1"
|
||||
android:key="pref_redmi_buds_5_pro_control_double_tap_left"
|
||||
android:summary="%s"
|
||||
android:title="@string/prefs_left" />
|
||||
<ListPreference
|
||||
android:entries="@array/redmi_buds_5_pro_button_function_names"
|
||||
android:entryValues="@array/redmi_buds_5_pro_button_function_values"
|
||||
android:defaultValue="1"
|
||||
android:key="pref_redmi_buds_5_pro_control_double_tap_right"
|
||||
android:summary="%s"
|
||||
android:title="@string/prefs_right" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="@string/triple_tap">
|
||||
<ListPreference
|
||||
android:entries="@array/redmi_buds_5_pro_button_function_names"
|
||||
android:entryValues="@array/redmi_buds_5_pro_button_function_values"
|
||||
android:icon="@drawable/ic_filter_3"
|
||||
android:defaultValue="2"
|
||||
android:key="pref_redmi_buds_5_pro_control_triple_tap_left"
|
||||
android:summary="%s"
|
||||
android:title="@string/prefs_left" />
|
||||
<ListPreference
|
||||
android:entries="@array/redmi_buds_5_pro_button_function_names"
|
||||
android:entryValues="@array/redmi_buds_5_pro_button_function_values"
|
||||
android:defaultValue="3"
|
||||
android:key="pref_redmi_buds_5_pro_control_triple_tap_right"
|
||||
android:summary="%s"
|
||||
android:title="@string/prefs_right" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="@string/long_press">
|
||||
<ListPreference
|
||||
android:entries="@array/redmi_buds_5_pro_long_button_mode_names"
|
||||
android:entryValues="@array/redmi_buds_5_pro_long_button_mode_values"
|
||||
android:icon="@drawable/ic_touch"
|
||||
android:defaultValue="6"
|
||||
android:key="pref_redmi_buds_5_pro_control_long_tap_mode_left"
|
||||
android:summary="%s"
|
||||
android:title="@string/sony_button_mode_left" />
|
||||
<ListPreference
|
||||
android:entries="@array/redmi_buds_5_pro_long_button_settings_names"
|
||||
android:entryValues="@array/redmi_buds_5_pro_long_button_settings_values"
|
||||
android:defaultValue="7"
|
||||
android:key="pref_redmi_buds_5_pro_control_long_tap_settings_left"
|
||||
android:summary="%s"
|
||||
android:title="@string/sony_ambient_sound_control_button_modes" />
|
||||
<ListPreference
|
||||
android:entries="@array/redmi_buds_5_pro_long_button_mode_names"
|
||||
android:entryValues="@array/redmi_buds_5_pro_long_button_mode_values"
|
||||
android:icon="@drawable/ic_touch"
|
||||
android:defaultValue="6"
|
||||
android:key="pref_redmi_buds_5_pro_control_long_tap_mode_right"
|
||||
android:summary="%s"
|
||||
android:title="@string/sony_button_mode_right" />
|
||||
<ListPreference
|
||||
android:entries="@array/redmi_buds_5_pro_long_button_settings_names"
|
||||
android:entryValues="@array/redmi_buds_5_pro_long_button_settings_values"
|
||||
android:defaultValue="7"
|
||||
android:key="pref_redmi_buds_5_pro_control_long_tap_settings_right"
|
||||
android:summary="%s"
|
||||
android:title="@string/sony_ambient_sound_control_button_modes" />
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="false"
|
||||
android:key="pref_redmi_buds_5_pro_wearing_detection"
|
||||
android:layout="@layout/preference_checkbox"
|
||||
android:icon="@drawable/ic_pause"
|
||||
android:summary="@string/nothing_prefs_inear_summary"
|
||||
android:title="@string/nothing_prefs_inear_title"/>
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="false"
|
||||
android:icon="@drawable/ic_phone"
|
||||
android:key="pref_redmi_buds_5_pro_auto_reply_phonecall"
|
||||
android:summary="@string/pref_auto_reply_calls_summary"
|
||||
android:title="@string/pref_auto_reply_calls_title"/>
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="false"
|
||||
android:key="pref_redmi_buds_5_pro_double_connection"
|
||||
android:summary="@string/redmi_buds_5_pro_double_connection_description"
|
||||
android:title="@string/redmi_buds_5_pro_double_connection"/>
|
||||
|
||||
</PreferenceCategory>
|
||||
</androidx.preference.PreferenceScreen>
|
||||
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<PreferenceCategory
|
||||
android:key="pref_key_header_redmibuds5pro_ambient_sound_control"
|
||||
android:title="@string/pref_header_sony_ambient_sound_control">
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="0"
|
||||
android:entries="@array/redmi_buds_5_pro_ambient_sound_control_names"
|
||||
android:entryValues="@array/redmi_buds_5_pro_ambient_sound_control_values"
|
||||
android:icon="@drawable/ic_hearing"
|
||||
android:key="pref_redmi_buds_5_pro_ambient_sound_control"
|
||||
android:summary="%s"
|
||||
android:title="@string/sony_ambient_sound" />
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="0"
|
||||
android:entries="@array/redmi_buds_3_pro_noise_cancelling_strength_names"
|
||||
android:entryValues="@array/redmi_buds_3_pro_noise_cancelling_strength_values"
|
||||
android:key="pref_redmi_buds_5_pro_noise_cancelling_strength"
|
||||
android:summary="%s"
|
||||
android:title="@string/prefs_active_noise_cancelling_level" />
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="0"
|
||||
android:entries="@array/redmi_buds_3_pro_transparency_strength_names"
|
||||
android:entryValues="@array/redmi_buds_3_pro_transparency_strength_values"
|
||||
android:key="pref_redmi_buds_5_pro_transparency_strength"
|
||||
android:summary="%s"
|
||||
android:title="@string/redmi_buds_5_pro_transparency_strength" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
</androidx.preference.PreferenceScreen>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<PreferenceCategory
|
||||
android:key="pref_key_header_redmibuds5pro_sound"
|
||||
android:title="@string/pref_header_equalizer">
|
||||
|
||||
<ListPreference
|
||||
android:defaultValue="0"
|
||||
android:entries="@array/redmi_buds_3_pro_equalizer_presets_names"
|
||||
android:entryValues="@array/redmi_buds_3_pro_equalizer_presets_values"
|
||||
android:icon="@drawable/ic_graphic_eq"
|
||||
android:key="pref_redmi_buds_5_pro_equalizer_preset"
|
||||
android:summary="%s"
|
||||
android:title="@string/prefs_equalizer_preset" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
</androidx.preference.PreferenceScreen>
|
||||
Reference in New Issue
Block a user