1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-07-22 14:52:25 +02:00

Amazfit Neo: Fix setting menu items

- Fixes a bug with cycling through entries
- adds steps, distance, calories, battery
- removes world clock (does not seem to work)
This commit is contained in:
Andreas Shimokawa 2021-03-24 00:42:25 +01:00
parent e9766da89c
commit a234c1d527
13 changed files with 36 additions and 61 deletions

View File

@ -20,12 +20,13 @@ public enum HuamiFirmwareType {
FIRMWARE((byte) 0), FIRMWARE((byte) 0),
FONT((byte) 1), FONT((byte) 1),
RES((byte) 2), RES((byte) 2),
RES_COMPRESSED((byte)130), RES_COMPRESSED((byte) 130),
GPS((byte) 3), GPS((byte) 3),
GPS_CEP((byte) 4), GPS_CEP((byte) 4),
GPS_ALMANAC((byte)5), GPS_CEP_NEW((byte) -4),
WATCHFACE((byte)8), GPS_ALMANAC((byte) 5),
FONT_LATIN((byte)11), WATCHFACE((byte) 8),
FONT_LATIN((byte) 11),
INVALID(Byte.MIN_VALUE); INVALID(Byte.MIN_VALUE);
private final byte value; private final byte value;

View File

@ -37,6 +37,7 @@ class HuamiMenuType {
put("mutephone", 0x0f); put("mutephone", 0x0f);
put("nfc", 0x10); put("nfc", 0x10);
put("alipay", 0x11); put("alipay", 0x11);
put("watchface", 0x12);
put("settings", 0x13); put("settings", 0x13);
put("activity", 0x14); put("activity", 0x14);
put("eventreminder", 0x15); put("eventreminder", 0x15);
@ -50,7 +51,11 @@ class HuamiMenuType {
put("sleep", 0x23); put("sleep", 0x23);
put("spo2", 0x24); put("spo2", 0x24);
put("breathing",0x33); put("breathing",0x33);
put("steps",0x34);
put("distance",0x35);
put("calories",0x36);
put("pomodoro", 0x38); put("pomodoro", 0x38);
put("alexa", 0x39); put("alexa", 0x39);
put("battery", 0x3a);
}}; }};
} }

View File

@ -2442,7 +2442,7 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
return this; return this;
} }
protected HuamiSupport setDisplayItemsNew(TransactionBuilder builder, boolean isShortcuts, int defaultSettings) { protected HuamiSupport setDisplayItemsNew(TransactionBuilder builder, boolean isShortcuts, boolean forceWatchface, int defaultSettings) {
SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()); SharedPreferences prefs = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress());
String pages; String pages;
List<String> enabledList; List<String> enabledList;
@ -2461,19 +2461,16 @@ public class HuamiSupport extends AbstractBTLEDeviceSupport {
} else { } else {
enabledList = Arrays.asList(pages.split(",")); enabledList = Arrays.asList(pages.split(","));
} }
if (forceWatchface) {
enabledList.add(0, "watchface");
}
LOG.info("enabled items" + enabledList); LOG.info("enabled items" + enabledList);
byte[] command = new byte[enabledList.size() * 4 + 1];
byte[] command = new byte[(enabledList.size() + 1) * 4 + 1];
command[0] = 0x1e; command[0] = 0x1e;
int pos = 1; int pos = 1;
int index = 0; int index = 0;
command[pos++] = (byte) index++;
command[pos++] = 0x00;
command[pos++] = menuType;
command[pos++] = 0x12;
for (String key : enabledList) { for (String key : enabledList) {
Integer id = HuamiMenuType.idLookup.get(key); Integer id = HuamiMenuType.idLookup.get(key);
if (id != null) { if (id != null) {

View File

@ -35,13 +35,13 @@ public class AmazfitBand5Support extends MiBand5Support {
@Override @Override
protected AmazfitBand5Support setDisplayItems(TransactionBuilder builder) { protected AmazfitBand5Support setDisplayItems(TransactionBuilder builder) {
setDisplayItemsNew(builder, false, R.array.pref_amazfitband5_display_items_default); setDisplayItemsNew(builder, false, true, R.array.pref_amazfitband5_display_items_default);
return this; return this;
} }
@Override @Override
protected AmazfitBand5Support setShortcuts(TransactionBuilder builder) { protected AmazfitBand5Support setShortcuts(TransactionBuilder builder) {
setDisplayItemsNew(builder, true, R.array.pref_amazfitband5_shortcuts_default); setDisplayItemsNew(builder, true, true, R.array.pref_amazfitband5_shortcuts_default);
return this; return this;
} }

View File

@ -83,13 +83,13 @@ public class AmazfitBipSSupport extends AmazfitBipSupport {
@Override @Override
protected AmazfitBipSSupport setDisplayItems(TransactionBuilder builder) { protected AmazfitBipSSupport setDisplayItems(TransactionBuilder builder) {
setDisplayItemsNew(builder, false, R.array.pref_bips_display_items_default); setDisplayItemsNew(builder, false, true, R.array.pref_bips_display_items_default);
return this; return this;
} }
@Override @Override
protected AmazfitBipSSupport setShortcuts(TransactionBuilder builder) { protected AmazfitBipSSupport setShortcuts(TransactionBuilder builder) {
setDisplayItemsNew(builder, true, R.array.pref_bips_display_items_default); setDisplayItemsNew(builder, true, true, R.array.pref_bips_display_items_default);
return this; return this;
} }

View File

@ -71,7 +71,7 @@ public class AmazfitGTSSupport extends AmazfitBipSupport {
@Override @Override
protected AmazfitGTSSupport setDisplayItems(TransactionBuilder builder) { protected AmazfitGTSSupport setDisplayItems(TransactionBuilder builder) {
setDisplayItemsNew(builder, false, R.array.pref_gts_display_items_default); setDisplayItemsNew(builder, false, true, R.array.pref_gts_display_items_default);
return this; return this;
} }

View File

@ -16,16 +16,10 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitneo; package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitneo;
import android.content.Context;
import android.net.Uri;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper;
//import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitneo.AmazfitBand5FWHelper; //import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitneo.AmazfitBand5FWHelper;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband5.MiBand5Support; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.miband5.MiBand5Support;
@ -35,16 +29,10 @@ public class AmazfitNeoSupport extends MiBand5Support {
@Override @Override
protected AmazfitNeoSupport setDisplayItems(TransactionBuilder builder) { protected AmazfitNeoSupport setDisplayItems(TransactionBuilder builder) {
setDisplayItemsNew(builder, false, R.array.pref_neo_display_items_default); setDisplayItemsNew(builder, false, false, R.array.pref_neo_display_items_default);
return this; return this;
} }
//@Override
//protected AmazfitNeoSupport setShortcuts(TransactionBuilder builder) {
// setDisplayItemsNew(builder, true, R.array.pref_amazfitband5_shortcuts_default);
// return this;
//}
//@Override //@Override
//public HuamiFWHelper createFWHelper(Uri uri, Context context) throws IOException { //public HuamiFWHelper createFWHelper(Uri uri, Context context) throws IOException {
// return new AmazfitBand5FWHelper(uri, context); // return new AmazfitBand5FWHelper(uri, context);

View File

@ -25,7 +25,6 @@ import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiFWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfittrex.AmazfitTRexFWHelper; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfittrex.AmazfitTRexFWHelper;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbips.AmazfitBipSSupport;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts.AmazfitGTSSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitgts.AmazfitGTSSupport;
public class AmazfitTRexSupport extends AmazfitGTSSupport { public class AmazfitTRexSupport extends AmazfitGTSSupport {
@ -37,7 +36,7 @@ public class AmazfitTRexSupport extends AmazfitGTSSupport {
@Override @Override
protected AmazfitTRexSupport setDisplayItems(TransactionBuilder builder) { protected AmazfitTRexSupport setDisplayItems(TransactionBuilder builder) {
setDisplayItemsNew(builder, false, R.array.pref_trex_display_items_default); setDisplayItemsNew(builder, false, true, R.array.pref_trex_display_items_default);
return this; return this;
} }

View File

@ -32,7 +32,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitbip.Ama
import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitvergel.AmazfitVergeLFWHelper; import nodomain.freeyourgadget.gadgetbridge.devices.huami.amazfitvergel.AmazfitVergeLFWHelper;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.UpdateFirmwareOperation; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.UpdateFirmwareOperation;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.UpdateFirmwareOperation2020; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.UpdateFirmwareOperation2020;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.UpdateFirmwareOperationNew;
public class AmazfitVergeLSupport extends AmazfitBipSupport { public class AmazfitVergeLSupport extends AmazfitBipSupport {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitVergeLSupport.class); private static final Logger LOG = LoggerFactory.getLogger(AmazfitVergeLSupport.class);
@ -49,7 +48,7 @@ public class AmazfitVergeLSupport extends AmazfitBipSupport {
@Override @Override
protected AmazfitVergeLSupport setDisplayItems(TransactionBuilder builder) { protected AmazfitVergeLSupport setDisplayItems(TransactionBuilder builder) {
setDisplayItemsNew(builder, false, R.array.pref_gts_display_items_values); setDisplayItemsNew(builder, false, true, R.array.pref_gts_display_items_values);
return this; return this;
} }

View File

@ -35,13 +35,13 @@ public class AmazfitXSupport extends MiBand5Support {
@Override @Override
protected AmazfitXSupport setDisplayItems(TransactionBuilder builder) { protected AmazfitXSupport setDisplayItems(TransactionBuilder builder) {
setDisplayItemsNew(builder, false, R.array.pref_amazfitband5_display_items_default); setDisplayItemsNew(builder, false, true, R.array.pref_amazfitband5_display_items_default);
return this; return this;
} }
@Override @Override
protected AmazfitXSupport setShortcuts(TransactionBuilder builder) { protected AmazfitXSupport setShortcuts(TransactionBuilder builder) {
setDisplayItemsNew(builder, true, R.array.pref_amazfitband5_shortcuts_default); setDisplayItemsNew(builder, true, true, R.array.pref_amazfitband5_shortcuts_default);
return this; return this;
} }

View File

@ -35,13 +35,13 @@ public class MiBand5Support extends MiBand4Support {
@Override @Override
protected MiBand5Support setDisplayItems(TransactionBuilder builder) { protected MiBand5Support setDisplayItems(TransactionBuilder builder) {
setDisplayItemsNew(builder, false, R.array.pref_miband5_display_items_default); setDisplayItemsNew(builder, false, true, R.array.pref_miband5_display_items_default);
return this; return this;
} }
@Override @Override
protected MiBand5Support setShortcuts(TransactionBuilder builder) { protected MiBand5Support setShortcuts(TransactionBuilder builder) {
setDisplayItemsNew(builder, true, R.array.pref_miband5_shortcuts_default); setDisplayItemsNew(builder, true, true, R.array.pref_miband5_shortcuts_default);
return this; return this;
} }

View File

@ -415,9 +415,10 @@
<item>@string/menuitem_weather</item> <item>@string/menuitem_weather</item>
<item>@string/menuitem_stopwatch</item> <item>@string/menuitem_stopwatch</item>
<item>@string/menuitem_alarm</item> <item>@string/menuitem_alarm</item>
<item>@string/menuitem_worldclock</item> <item>@string/chart_steps</item>
<item>@string/menuitem_activity</item> <item>@string/distance</item>
<item>@string/menuitem_goal</item> <item>@string/calories</item>
<item>@string/battery</item>
</string-array> </string-array>
<string-array name="pref_neo_display_items_values"> <string-array name="pref_neo_display_items_values">
@ -427,9 +428,10 @@
<item>@string/p_menuitem_weather</item> <item>@string/p_menuitem_weather</item>
<item>@string/p_menuitem_stopwatch</item> <item>@string/p_menuitem_stopwatch</item>
<item>@string/p_menuitem_alarm</item> <item>@string/p_menuitem_alarm</item>
<item>@string/p_menuitem_worldclock</item> <item>@string/p_steps</item>
<item>@string/p_menuitem_activity</item> <item>@string/p_distance</item>
<item>@string/p_menuitem_goal</item> <item>@string/p_calories</item>
<item>@string/p_battery</item>
</string-array> </string-array>
<string-array name="pref_neo_display_items_default"> <string-array name="pref_neo_display_items_default">

View File

@ -10,15 +10,7 @@
android:persistent="true" android:persistent="true"
android:summary="@string/mi2_prefs_display_items_summary" android:summary="@string/mi2_prefs_display_items_summary"
android:title="@string/mi2_prefs_display_items" /> android:title="@string/mi2_prefs_display_items" />
<!--com.mobeta.android.dslv.DragSortListPreference
android:defaultValue="@array/pref_amazfitband5_shortcuts_default"
android:dialogTitle="@string/bip_prefs_shortcuts"
android:entries="@array/pref_amazfitband5_shortcuts"
android:entryValues="@array/pref_amazfitband5_shortcuts_values"
android:key="shortcuts_sortable"
android:persistent="true"
android:summary="@string/bip_prefs_shotcuts_summary"
android:title="@string/bip_prefs_shortcuts" /-->
<ListPreference <ListPreference
android:icon="@drawable/ic_language" android:icon="@drawable/ic_language"
android:defaultValue="auto" android:defaultValue="auto"
@ -28,11 +20,3 @@
android:summary="%s" android:summary="%s"
android:title="@string/pref_title_language" /> android:title="@string/pref_title_language" />
</androidx.preference.PreferenceScreen> </androidx.preference.PreferenceScreen>
<!--
android:entryValues="@array/pref_amazfitband5_display_items_values"
-->