Zestaw EK

Zestaw narzędzi, który pozwala na pełną personalizację i dostosowanie zegarka do Twoich potrzeb.

Główne funkcje:

  • Wybór koloru godzin i minut (RGB Picker): Możesz dowolnie zmieniać kolory cyfr wyświetlających godziny i minuty, korzystając z pełnej palety barw RGB, dzięki czemu idealnie dopasujesz wygląd tarczy do swojego stylu.
  • Aktywny kalendarz: Ustaw niestandardowy licznik, który pokaże, ile dni, godzin i minut pozostało do ważnego dla Ciebie wydarzenia, np. urodzin czy wakacji.
  • Wymaga aplikacji EK Tools: Aby w pełni korzystać ze wszystkich opcji, tarcza wymaga zainstalowania dodatkowej aplikacji EK Tools.
Konfigurowalne górne widżety:

W górnej części tarczy możesz przełączać się między różnymi widżetami, które dostarczą Ci kluczowych informacji na temat Twojej aktywności i zdrowia:

  • Liczba dni w tygodniu z osiągniętym celem kroków: Sprawdź, jak często udało Ci się osiągnąć dzienny cel kroków.
  • Spalanie tłuszczu w gramach: Monitoruj efektywność swoich treningów, widząc, ile tłuszczu zostało spalone.
  • Liczba dni od ostatniego pełnego naładowania zegarka: Śledź, ile czasu upłynęło od ostatniego ładowania.
  • Poziom baterii telefonu: Aby monitorować poziom baterii telefonu, tarcza wymaga zainstalowania dodatkowej aplikacji Phone Info.
Aplikacja do personalizacji tarczy:

EK Tools to aplikacja, która pozwala na pełne spersonalizowanie tarczy zegarka. Aplikacja jest niezbędna do korzystania z wielu funkcji w tarczy z serii EK Watchface.

  • Wybór koloru godzin i minut (RGB Picker): Aplikacja oferuje cztery opcje zapisu wybranego koloru: trzy z nich to profile, które pozwalają na łatwe wczytanie ulubionych ustawień w przyszłości, a czwarta umożliwia bezpośredni zapis koloru na tarczy zegarka.
  • Aktywny kalendarz: Aplikacja umożliwia ustawienie niestandardowego licznika, który odlicza czas do wybranego przez Ciebie dnia i godziny. Możesz także nadać wydarzeniu własną nazwę, np. „Wakacje” lub „Urodziny”.
  • - Gdy wydarzenie jeszcze nie nastąpiło, na tarczy zegarka zobaczysz, ile dni pozostało do jego daty.
    - Gdy nadejdzie dzień wydarzenia, zobaczysz pozostały czas (godzinę) oraz jego nazwę, a także dostaniesz powiadomienie w godzinie wydarzenia.
    - Gdy wydarzenie już minie, na tarczy pojawi się przycisk „SKONFIGURUJ”, który pozwoli Ci na ponowną konfigurację odliczanie.

Ważna informacja:

Jeśli na tarczy zegarka widzisz komunikat „Tools not installed”, musisz w pełni skonfigurować aplikację EK Tools, przełączyć się na inną tarczę, a następnie wrócić do wybranej tarczy EK.

Zrzuty ekranu

Dla deweloperów

Dzięki poniższemu przykładowemu kodowi, twórcy niestandardowych tarcz mogą w łatwy sposób wyświetlać dane z aplikacji EK bezpośrednio na swoich tarczach, co pozwala na jeszcze większą personalizację i wygodę:

Funkcje

function getColor() {
    const mini_app_id = 1086616;
    const file_name = "colorA_z25.txt";
    let str_result = "";
    try {
        const fh = openSync({
            path: file_name,
            flag: O_RDONLY,
            options: { appId: mini_app_id },
        });

        const len = 1024;
        let array_buffer = new ArrayBuffer(len);
        const bytesRead = readSync({
            fd: fh,
            buffer: array_buffer,
            offset: 0,
            length: len
        });
        closeSync({ fd: fh });
        if (bytesRead < len) {
            array_buffer = array_buffer.slice(0, bytesRead);
        }

        str_result = ab2str(array_buffer);
        //console.log("os3 color: " + str_result);
    } catch (error) {
        console.log("Błąd dostępu do hmFS:", error);
    }

    const new_color = parseInt(str_result, 16);
    if (!str_result.includes('x') && !str_result.includes('X')) {
        return undefined;
    } else {
        return new_color;
    }
};

function getColor2() {
    const mini_app_id = 1086616;
    const file_name = "colorB_z25.txt";
    let str_result = "";
    try {
        const fh = openSync({
            path: file_name,
            flag: O_RDONLY,
            options: { appId: mini_app_id },
        });

        const len = 1024;
        let array_buffer = new ArrayBuffer(len);
        const bytesRead = readSync({
            fd: fh,
            buffer: array_buffer,
            offset: 0,
            length: len
        });
        closeSync({ fd: fh });
        if (bytesRead < len) {
            array_buffer = array_buffer.slice(0, bytesRead);
        }

        str_result = ab2str(array_buffer);
        //console.log("os3 color: " + str_result);
    } catch (error) {
        console.log("Błąd dostępu do hmFS:", error);
    }

    const new_color = parseInt(str_result, 16);
    if (!str_result.includes('x') && !str_result.includes('X')) {
        return undefined;
    } else {
        return new_color;
    }
};

function getEventDate() {
    const mini_app_id = 1086616;
    const file_name = "counter_z25.txt";
    let str_result = "";
    try {
        const fh = openSync({
            path: file_name,
            flag: O_RDONLY,
            options: { appId: mini_app_id },
        });

        const len = 1024;
        let array_buffer = new ArrayBuffer(len);
        const bytesRead = readSync({
            fd: fh,
            buffer: array_buffer,
            offset: 0,
            length: len
        });
        closeSync({ fd: fh });
        if (bytesRead < len) {
            array_buffer = array_buffer.slice(0, bytesRead);
        }

        str_result = ab2str(array_buffer);
        //console.log("os3 color: " + str_result);
    } catch (error) {
        console.log("Błąd dostępu do hmFS:", error);
    }

    if (!str_result.includes('/')) {
        return undefined;
    } else {
        return str_result;
    }
};

function getEventTime() {
    const mini_app_id = 1086616;
    const file_name = "countertime_z25.txt";
    let str_result = "";
    try {
        const fh = openSync({
            path: file_name,
            flag: O_RDONLY,
            options: { appId: mini_app_id },
        });

        const len = 1024;
        let array_buffer = new ArrayBuffer(len);
        const bytesRead = readSync({
            fd: fh,
            buffer: array_buffer,
            offset: 0,
            length: len
        });
        closeSync({ fd: fh });
        if (bytesRead < len) {
            array_buffer = array_buffer.slice(0, bytesRead);
        }

        str_result = ab2str(array_buffer);
        //console.log("os3 color: " + str_result);
    } catch (error) {
        console.log("Błąd dostępu do hmFS:", error);
    }

    if (!str_result.includes(':')) {
        return undefined;
    } else {
        return str_result;
    }
};

function getEventName() {
    const mini_app_id = 1086616;
    const file_name = "countername_z25.txt";
    let str_result = "";
    try {
        const fh = openSync({
            path: file_name,
            flag: O_RDONLY,
            options: { appId: mini_app_id },
        });

        const len = 1024;
        let array_buffer = new ArrayBuffer(len);
        const bytesRead = readSync({
            fd: fh,
            buffer: array_buffer,
            offset: 0,
            length: len
        });
        closeSync({ fd: fh });
        if (bytesRead < len) {
            array_buffer = array_buffer.slice(0, bytesRead);
        }

        str_result = ab2str(array_buffer);
        //console.log("os3 color: " + str_result);
    } catch (error) {
        console.log("Błąd dostępu do hmFS:", error);
    }

    if (str_result.length === 0) {
        return undefined;
    } else {
        return str_result;
    }
};

function ab2str(buf) {
    return String.fromCharCode.apply(null, new Uint8Array(buf));
};

Zastosowanie

let is_tools_installed = getColor();
let is_tools_installed2 = getColor2();

if (is_tools_installed == undefined) {
    //console.log('No access to hmFS, using default color');
    time_hm.setProperty(hmUI.prop.MORE, {
        color: 0x457ff8,
    });
} else {
    time_hm.setProperty(hmUI.prop.MORE, {
        color: getColor()
    });
}
	
if (is_tools_installed2 == undefined) {
    //console.log('No access to hmFS2, using default color');
    time_hm2.setProperty(hmUI.prop.MORE, {
        color: 0xff9539,
    });
} else {
    time_hm2.setProperty(hmUI.prop.MORE, {
        color: getColor2()
    });
}
	
let split_date = getEventDate()
let myArray = ''
let counter_day = ''
let counter_month = ''
let counter_year = ''
//console.log(split_date + " date!!");
if (split_date != undefined) {
    myArray = split_date.split("/");
    counter_day = myArray[2]
    counter_month = myArray[1]
    counter_year = myArray[0]
} else {
    counter_day = time.getDate()
    counter_month = time.getMonth()
    counter_year = time.getFullYear()
}
const today2 = new Date(time.getFullYear() + '/' + time.getMonth() + '/' + time.getDate());
const event = new Date(counter_year + '/' + counter_month + '/' + counter_day);
const diffTime = Math.abs(event - today2);
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
	
event_desc.setProperty(hmUI.prop.TEXT, getEventTime() + ' - ' + getEventName());
days.setProperty(hmUI.prop.TEXT, diffDays);

Pobierz

Zestaw narzędzi dostępny w Zepp Store!

Pod nazwami: EK Watchface, EK Tools oraz Phone Info.

Do odczytu poziomu baterii telefonu wymagana jest instalacja aplikacji AmazSync na Twoim smartfonie.

T-Rex 3, Balance 2, Active 2 (Round), Active 2 (Round) NFC