Zalecamy, aby aplikacje na Wear OS działały niezależnie od telefonu, aby użytkownicy mogli wykonywać zadania na zegarku bez dostępu do telefonu z Androidem lub iOS. Jeśli aplikacja na zegarek wymaga użycia telefonu, oznacz aplikację na Wear OS jako niesamodzielną aplikację i zadbaj o to, aby użytkownik miał dostęp do aplikacji Telefon.
Planowanie aplikacji
Dzięki Android App Bundle możesz automatycznie generować zoptymalizowane pakiety Android Package Kit (APK) dla konfiguracji urządzenia każdego użytkownika w ramach tej samej strony aplikacji. Dzięki temu użytkownicy będą mogli pobierać tylko kod i zasoby potrzebne do uruchomienia Twojej aplikacji.
Informacje o konfigurowaniu aplikacji do dystrybucji w Sklepie Google Play znajdziesz w artykule na temat pakowania i dystrybucji aplikacji na Wear OS oraz przewodnika dla początkujących użytkowników pakietów Android App Bundle.
W przypadku nowych aplikacji docelowy poziom interfejsu API musi wynosić 30 lub wyższy. Więcej informacji znajdziesz w artykule Spełnianie wymagań Google Play dotyczących docelowego poziomu interfejsu API. Ustaw targetSdkVersion
interfejsu API na poziomie 30 (Wear OS 3), aby mieć pewność, że aplikacja będzie dobrze działać na najnowszej wersji platformy.
Informacje o żądaniach sieciowych i dostępie do sieci o dużej przepustowości znajdziesz w artykule Dostęp do sieci i synchronizacja w Wear OS.
Definiowanie aplikacji jako aplikacji na Wear OS
Tag
<uses-feature>
musisz zdefiniować w pliku manifestu aplikacji na Androida.
Aby wskazać, że jest to aplikacja na zegarek, dodaj wpis podobny do tego:
<manifest> ... <uses-feature android:name="android.hardware.type.watch" /> ... </manifest>
Określanie aplikacji jako samodzielnej lub jako samodzielnej
Aplikacja na zegarek jest uważana za samodzielną lub niesamodzielną aplikację:
- Samodzielna: zupełnie niezależna aplikacja, która nie wymaga aplikacji na telefon do obsługi podstawowych funkcji, w tym uwierzytelniania. Aplikacja na telefon udostępnia tylko opcjonalne funkcje, jeśli są dostępne.
- Niesamodzielna: aplikacja zależna, która do działania podstawowych funkcji, w tym uwierzytelniania, wymaga zainstalowania aplikacji na telefonie lub innym urządzeniu.
W aplikacji na Wear OS ustaw wartość elementu
meta-data
com.google.android.wearable.standalone
w pliku manifestu Androida, aby określić, czy jest to aplikacja samodzielna czy samodzielna.
Jeśli aplikacja na zegarek jest całkowicie niezależną, samodzielną aplikacją, wskaż Sklep Google Play, ustawiając wartość com.google.android.wearable.standalone
na true
:
<application> ... <meta-data android:name="com.google.android.wearable.standalone" android:value="true" /> ... </application>
Jeśli aplikacja na zegarek nie jest samodzielną aplikacją, której podstawowe funkcje działają z inną aplikacją, ustaw wartość com.google.android.wearable.standalone
na false
. Oznacza to, że aplikacja na zegarek wymaga innego urządzenia, ale nie ma wpływu na promocję aplikacji w Sklepie Google Play.
Uwaga: nawet jeśli wartość com.google.android.wearable.standalone
to false
, aplikację na zegarek można zainstalować przed instalacją telefonu.
Jeśli więc aplikacja na zegarek wykryje, że na telefonie towarzyszącym nie ma wymaganej aplikacji do obsługi telefonu (zgodnie z opisem na tej stronie), poproś użytkownika o jej zainstalowanie.
Udostępniony kod i miejsce na dane
Kod może być udostępniany między aplikacją na Wear OS a aplikacją na telefon. Na przykład wspólny kod sieci może znajdować się w zasobach wspólnych.
Opcjonalnie kod specyficzny dla danego formatu może się znaleźć w osobnym module.
Możesz przechowywać dane lokalnie, używając standardowych interfejsów API pamięci Androida (podobnie jak na telefonie). Możesz na przykład użyć interfejsów SharedPreferences lub biblioteki trwałości Room.
Wykrywanie aplikacji na innym urządzeniu
Aplikacja na zegarek i powiązana z nią aplikacja na telefon mogą wykrywać, czy druga aplikacja jest dostępna.
Aplikacje na telefon i zegarek mogą używać interfejsu
CapabilityClient
, aby informować o swoim obecności na sparowanym urządzeniu. Mogą to robić statycznie lub dynamicznie.
Gdy aplikacja znajduje się w węźle w sieci Wear OS użytkownika, np. na telefonie, sparowanym zegarku lub w chmurze, CapabilityClient
umożliwia innym aplikacjom jej wykrycie. Więcej informacji znajdziesz w artykule o
możliwościach reklamowania.
Jeśli jedna z aplikacji nie wykrywa drugiej, możesz poprosić użytkownika o otwarcie strony aplikacji w Sklepie Play na urządzeniu, którego dotyczy problem. Jest to rozwiązanie w przypadku aplikacji na zegarek, które do prawidłowego działania wymagają obecności aplikacji towarzyszącej na telefonie.
Musisz sprawdzić, czy Sklep Play jest dostępny na urządzeniu, ponieważ nie wszystkie telefony (np. iPhone) obsługują Sklep Play.
W tych sekcjach znajdziesz opis sprawdzonych metod dla 2 scenariuszy:
- Samodzielna aplikacja na zegarek wymaga aplikacji na telefon.
- Aplikacja na telefon wymaga samodzielnej aplikacji na zegarek.
Możesz też zapoznać się z
przykładem pomocniczym elementu Datalayer, który pokazuje, jak używać
bibliotek pomocniczych Datalayer, które są częścią
Horologist. Te pomoce umożliwiają monitorowanie połączenia między urządzeniem mobilnym a urządzeniem z Wear OS.
Więcej informacji o klasach opisanych w kolejnej sekcji znajdziesz w dokumentacji interfejsu Wear OS API.
Ten plik zawiera też informacje o klasie
PhoneTypeHelper
, która zawiera metodę
getPhoneDeviceType()
, która umożliwia aplikacji na Wear OS sprawdzenie, czy telefon towarzyszący jest urządzeniem z Androidem czy iOS.
Podaj nazwy funkcji wykrywania aplikacji
W przypadku aplikacji odpowiadającej każdemu typowi urządzenia (zegarka lub telefonu) podaj w pliku res/values/wear.xml
unikalny ciąg znaków dla nazwy funkcji.
Na przykład w module mobilnym plik wear.xml
może zawierać:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@array/android_wear_capabilities"> <string-array name="android_wear_capabilities"> <item>verify_remote_example_phone_app</item> </string-array> </resources>
W module Wear OS plik wear.xml
zawiera inną wartość nazwy możliwości, na przykład:
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@array/android_wear_capabilities"> <string-array name="android_wear_capabilities"> <item>verify_remote_example_wear_app</item> </string-array> </resources>
Więcej informacji znajdziesz w artykule o możliwościach reklamowania.
Wykrywanie aplikacji i otwieranie adresu URL z poziomu zegarka
Aplikacja na zegarek może wykryć, czy na telefonie towarzyszącym użytkownika jest zainstalowana aplikacja Telefon. Wykonaj te czynności:
-
CapabilityClient
umożliwia sprawdzenie, czy aplikacja Telefon jest zainstalowana na sparowanym telefonie. Więcej informacji znajdziesz w przykładzie pomocniczym Datalayer w GitHubie. -
Jeśli na telefonie nie masz zainstalowanej aplikacji Telefon, użyj metody
PhoneDeviceType.getPhoneDeviceType()
, aby sprawdzić typ telefonu. Szczegółowe informacje znajdziesz w sekcji poniżej. -
Jeśli zostanie zwrócona wartość
PhoneDeviceType.DEVICE_TYPE_ANDROID
, będzie to telefon z Androidem. Zadzwoń na numerRemoteActivityHelper.startRemoteActivity()
na urządzeniu z Wear OS, aby otworzyć Sklep Play na telefonie. Użyj identyfikatora URI rynku aplikacji na telefon. Może on być inny niż identyfikator URI aplikacji na Wear. Na przykład użyj identyfikatora URI rynku, takiego jak:market://details?id=com.example.android.wearable.wear.finddevices
. -
Jeśli zwrócony zostanie
PhoneDeviceType.DEVICE_TYPE_IOS
, będzie to telefon z iOS bez Sklepu Play. Otwórz App Store na iPhonie, dzwoniąc pod numerRemoteActivityHelper.startRemoteActivity()
na urządzeniu z Wear OS. Możesz podać URL aplikacji w iTunes, np.https://itunes.apple.com/us/app/yourappname
.W Wear OS nie można automatycznie określić, czy aplikacja Telefon jest zainstalowana na urządzeniu z iOS. Sprawdzoną metodą jest udostępnienie użytkownikowi mechanizmu ręcznego aktywowania App Store.
Uwaga: użyj wcześniej opisanego interfejsu API RemoteActivityHelper
, aby określić, że dowolny adres URL może być otwierany na telefonie z poziomu zegarka i nie jest wymagana żadna aplikacja do obsługi telefonu.
Szczegóły dotyczące wykrywania typu sparowanego telefonu
Oto fragment kodu korzystający z metody getPhoneDeviceType()
do sprawdzania typu telefonu, z którym jest sparowany zegarek:
Kotlin
var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)
Java
int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);
Wartość zwracana przez metodę getPhoneDeviceType()
jest jedną z tych wartości:
Zwracana wartość | Description |
---|---|
DEVICE_TYPE_ANDROID
|
Powiązany telefon to urządzenie z Androidem. |
DEVICE_TYPE_IOS
|
Telefon towarzyszący to urządzenie z iOS. |
DEVICE_TYPE_UNKNOWN
|
Telefon towarzyszący jest nieznanym urządzeniem. |
DEVICE_TYPE_ERROR
|
Podczas określania typu sparowanego telefonu wystąpił błąd. Kolejne sprawdzenie należy sprawdzić później. |
Wykrywanie aplikacji od telefonu z Androidem
Telefon z Androidem może wykryć, czy na urządzeniach z Wear OS użytkownika zainstalowana jest aplikacja na zegarek. Wykonaj te czynności:
-
Za pomocą właściwości
NodeClient
znajdź wszystkie zegarki połączone z telefonem użytkownika. Więcej informacji znajdziesz w przykładzie pomocniczym Datalayer w GitHubie. -
Za pomocą
CapabilityClient
sprawdź, na których zegarkach użytkownika jest zainstalowana Twoja aplikacja. -
Jeśli Twoja aplikacja nie jest zainstalowana na wszystkich zegarkach użytkownika, zezwól użytkownikowi
na otwieranie Sklepu Play na pozostałych urządzeniach z Wear OS, korzystając z metody
RemoteActivityHelper.startRemoteActivity()
. Użyj identyfikatora URI rynku dla aplikacji na Wear OS. Może on być inny niż identyfikator URI aplikacji na telefon. Na przykład użyj identyfikatora URI rynku, takiego jak:market://details?id=com.example.android.wearable.wear.finddevices
.
Dane o lokalizacji w przypadku zegarków sparowanych z iPhone'ami
W przypadku zegarków sparowanych z iPhone'ami skorzystaj z usługi Fused Location Provider (FLP), by pobierać dane o lokalizacji z zegarka. Więcej informacji znajdziesz w artykule o wykrywaniu lokalizacji na Wear OS.
Jeśli telefon towarzyszący jest dostępny, FLP używa telefonu towarzyszącego do uzyskiwania danych o lokalizacji.
Uzyskiwanie tylko niezbędnych danych
Ogólnie rzecz biorąc, aby uzyskać dane z internetu, należy uzyskać tylko niezbędne informacje. W przeciwnym razie mogą wystąpić niepotrzebne opóźnienia, wykorzystanie pamięci i wykorzystanie baterii.
Gdy zegarek jest połączony przez Bluetooth LE, aplikacja może mieć dostęp do przepustowości tylko 4 kilobajtów na sekundę, w zależności od zegarka. Dlatego zalecamy wykonanie tych czynności:
- Kontroluj żądania sieciowe i odpowiedzi pod kątem dodatkowych danych, które są potrzebne tylko przez aplikację na telefon.
- Zmniejsz duże obrazy przed przesłaniem ich przez sieć na zegarek.
Informacje o sytuacjach, w których potrzebna jest sieć o dużej przepustowości, znajdziesz w sekcji Dostęp do sieci o dużej przepustowości.
Dodatkowe przykłady kodu
W przykładzie pomocniczym dataLayer dokładnie pokazano użycie interfejsów API omówionych na tej stronie.