een Wear OS app kan onafhankelijk van een telefoon werken. Gebruikers kunnen taken uitvoeren op een horloge, zonder toegang tot een Android-of iOS-telefoon.
verwijs naar de volgende gerelateerde bronnen:
- Remote App voorbeeld verifiëren
- Plan uw apps
- Identificeer een app als standalone
- Definieer een app als een Wear app
- gedeelde code en gegevensopslag
- Detecteer uw app op een ander apparaat
- geef capability namen op voor het detecteren van uw apps
- app detectie en het openen van een URL van een watch
- Details voor het detecteren van het type gekoppelde telefoon
- Kotlin
- Java
- appdetectie vanaf een Android-telefoon
- locatiegegevens voor horloges gekoppeld aan iPhones
- verkrijg alleen de benodigde gegevens
- aanvullende codemonsters
Plan uw apps
u kunt de functie meerdere APK (multi-APK) van Google Play gebruiken om meer dan één APK onder dezelfde applicatie-lijst te publiceren. Een horloge APK moet worden gedistribueerd met behulp van die functie; niet insluiten een horloge APK in een telefoon APK. Zie Wear-Apps verpakken en distribueren en hoe meerdere apk ‘ s werken voor informatie over het instellen van uw app voor distributie via de Google Play Store.
opmerking: om in aanmerking te komen voor promotie in de Google Play Store on Wear (dat wil zeggen in de on-watch Play Store), moet uw app onafhankelijk van een telefoon functioneren. iOS en Android ondersteuning is vereist.
in het algemeen is het minimale en beoogde API-niveau voor een zelfstandige app, en voor Wear 2.0, niveau 25. De minimale SDK niveau kan worden 23 alleen als u gebruik maakt van dezelfde APK voor slijtage 1.0 en 2.0 (en dus hebben een ingebed slijtage 1.0 APK).
Opmerking: vanwege een latentieprobleem dat van invloed is op de beschikbaarheid van een app op Wear 1.x horloges, Als u een standalone slijtage bouwen 2.0 APK en zal blijven een slijtage 1.0 APK hebben, doen beide van de volgende:
- zorg voor een standalone versie van de Wear APK, en
- blijven inbedden van een versie van de Wear APK in uw telefoon APK
voorzichtigheid: Als u een update te publiceren op uw bestaande, productie telefoon APK die een embedded slijtage APK heeft verwijderd, productie gebruikers die de telefoon bij te werken APK voordat u uw standalone slijtage APK zal hun bestaande slijtage app en de gegevens te verliezen. Als u een update te publiceren op uw bestaande, productie telefoon APK, blijven uw horloge APK insluiten in die telefoon APK.
Runtime-rechten zijn vereist voor zelfstandige apps.
voor informatie over netwerkaanvragen en netwerktoegang met hoge bandbreedte, zie netwerktoegang en synchronisatie.
Identificeer een app als standalone
Wear apps moeten een meta-data
– element in het Android Manifest-bestand hebben, als kind van het <application>
– element. De naam van het meta-data
element is com.google.android.wearable.standalone
en de waarde moet true
of false
zijn. Het element geeft aan of uw horloge-app is een standalone app en dus niet een telefoon-side Android app te bedienen. Als de instelling voor het element true
is, kan uw app beschikbaar worden gemaakt in de Play Store op Horloges gekoppeld aan iPhones, zolang uw actieve Apk in alle kanalen (bijvoorbeeld in het bètakanaal) het element op true
hebben ingesteld. Als niet alle APK ‘ s (alpha, beta en productie) die momenteel worden geserveerd aan gebruikers de bovenstaande instelling hebben, is uw app niet beschikbaar wanneer een gebruiker zoekt op een horloge gekoppeld aan een iPhone.
een watch-app kan worden beschouwd als een van de volgende:
- volledig onafhankelijk van een telefoon-app
- Semi-onafhankelijk (een telefoon-app is niet vereist en biedt alleen optionele functies)
- afhankelijk van een telefoon-app
als een watch-app volledig of semi-onafhankelijk is, wordt deze beschouwd als een zelfstandige categorie. U moet deze categorisatie aangeven in de Google Play store door de waarde van dit meta-data
element in te stellen op true
:
<application>... <meta-data android:name="com.google.android.wearable.standalone" android:value="true" />...</application>
aangezien een standalone app (dat wil zeggen, een onafhankelijke of semi-onafhankelijke app) kan worden geïnstalleerd door een iPhone-gebruiker of een gebruiker van een Android-telefoon die de Play Store mist, de watch app moet bruikbaar zijn zonder de telefoon app.
als een watch-app afhankelijk is van een telefoon-app, stelt u de waarde van het bovenstaande meta-data
– element in op false
. Het instellen van het element op false
betekent dat de watch-app alleen moet worden geïnstalleerd op een horloge dat is gekoppeld aan een telefoon met de Play Store.
opmerking: zelfs als de waarde false
is, kan de watch-app worden geïnstalleerd voordat de telefoon-app wordt geïnstalleerd. Daarom, als een horloge-app detecteert dat een metgezel telefoon mist een noodzakelijke telefoon-app, de horloge-app moet de gebruiker vragen om de telefoon-app te installeren.
Definieer een app als een Wear app
u moet ervoor zorgen dat de <uses-feature>
tag is gedefinieerd in het Android Manifest-bestand in uw app. Het moet aangeven dat het een watch
app is, bijvoorbeeld android:name="android.hardware.type.watch"
, en wel als volgt::
<manifest>... <uses-feature android:name="android.hardware.type.watch" />...</manifest>
gedeelde code en gegevensopslag
Code kan worden gedeeld tussen een Wear-app en een telefoon-app. Optioneel kan code die specifiek is voor een vormfactor in een aparte module worden geplaatst.
gemeenschappelijke code voor netwerken kan bijvoorbeeld in een gedeelde bibliotheek zijn.
u kunt standaard Android opslag API ‘ s gebruiken om gegevens lokaal op te slaan, zoals op een telefoon. U kunt bijvoorbeeld gebruik maken van de SharedPreferences API ‘ s of de room persistence library.
Detecteer uw app op een ander apparaat
uw watch-app kan detecteren of de bijbehorende telefoon-app beschikbaar is en vice versa.
uw telefoon-app of kijk-app kan de CapabilityClient
gebruiken om de aanwezigheid van de app te adverteren op een gekoppeld apparaat. Het kan dit statisch en dynamisch doen. Wanneer een app zich op een knooppunt in het Wear-netwerk van een gebruiker bevindt (bijvoorbeeld op een telefoon, gekoppeld horloge of in de cloud), stelt CapabilityClient
een andere app in staat om te detecteren of deze is geïnstalleerd. Zie mogelijkheden adverteren voor meer informatie.
als een van uw apps de andere niet kan detecteren, kunt u een gebruiker de Play Store-lijst op zijn externe apparaat laten openen. Dit is een oplossing voor watch apps die de aanwezigheid van hun metgezel telefoon app nodig hebben om goed te functioneren. Een voorwaarde is om te controleren of de Play Store ‘ s aanwezigheid op het externe apparaat.
merk op dat niet alle telefoons de Play Store ondersteunen (zoals iPhones, enz.).
dit gedeelte beschrijft de beste praktijken voor deze scenario ‘ s:
- uw standalone horloge-app heeft uw telefoon-app
- uw telefoon-app heeft uw standalone horloge-app
Bekijk het voorbeeld dat deze functionaliteit toont. Voor meer informatie over de hieronder beschreven klassen, zie de Wear API referentie. In die referentie staat ook informatie over de PhoneDeviceType
– klasse, die een getPhoneDeviceType()
– methode bevat waarmee uw Wear-app kan controleren of een metgezeltelefoon een Android-of iOS-apparaat is.
geef capability namen op voor het detecteren van uw apps
voor de app die overeenkomt met elk apparaattype (horloge of telefoon), geef een unieke string op voor de capability naam in het res/values/wear.xml
bestand.
in uw mobiele module zou het bestand wear.xml
bijvoorbeeld het volgende kunnen bevatten:
in uw wear-module zou het bestand wear.xml
een andere waarde voor de capability-naam kunnen bevatten, zoals het volgende:
zie adverteer mogelijkheden voor meer informatie.
app detectie en het openen van een URL van een watch
uw watch-app kan detecteren of de metgezeltelefoon van een gebruiker uw telefoon-app heeft:
- gebruik
CapabilityClient
om te controleren of uw telefoon-app is geïnstalleerd op de gekoppelde telefoon. Zie het voorbeeld voor meer informatie. - als uw telefoon-app niet op de telefoon is geïnstalleerd, gebruikt u de methode
PhoneDeviceType.getPhoneDeviceType()
om het type telefoon te controleren. - indien
PhoneDeviceType.DEVICE_TYPE_ANDROID
wordt geretourneerd, is de telefoon een Android-telefoon. BelRemoteIntent.startRemoteActivity()
op het Wear-apparaat om de app store op de telefoon te openen. Gebruik de markt-URI voor uw telefoon-app (die kan verschillen van uw telefoon-URI). Gebruik bijvoorbeeld een markt-URI zoals:market://details?id=com.example.android.wearable.wear.finddevices
- als
PhoneDeviceType.DEVICE_TYPE_IOS
wordt geretourneerd, betekent dit dat de telefoon een iOS-telefoon is (zonder Play Store beschikbaar). Open de App Store op de iPhone door op het Wear-apparaatRemoteIntent.startRemoteActivity()
te bellen. U kunt de iTunes URL van uw app opgeven, bijvoorbeeld. Op een iPhone, van Wear OS, kunt u niet programmatisch bepalen of uw telefoon app is geïnstalleerd. Als een best practice, bieden een mechanisme aan de gebruiker (bijvoorbeeld, een knop) om de opening van de App Store handmatig te activeren.
merk op dat met behulp van de hierboven beschreven RemoteIntent
API, u kunt opgeven dat een URL op de telefoon wordt geopend vanuit het horloge, en geen telefoon-app is vereist.
Details voor het detecteren van het type gekoppelde telefoon
hier is een fragment dat de getPhoneDeviceType()
methode gebruikt om het type telefoon te controleren waaraan het horloge gekoppeld is:
Kotlin
var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)
Java
int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);
de waarde die volgens de methode getPhoneDeviceType()
wordt geretourneerd, is een van de volgende waarden::
retourwaarde | beschrijving |
---|---|
DEVICE_TYPE_ANDROID |
de metgezel telefoon is een Android-apparaat. |
DEVICE_TYPE_IOS |
de metgezel telefoon is een iOS-apparaat. |
DEVICE_TYPE_ERROR_UNKNOWN |
er is een fout opgetreden bij het bepalen van het type gekoppelde telefoon; een andere controle moet later worden uitgevoerd. |
appdetectie vanaf een Android-telefoon
uw Android-telefoon kan detecteren of de Wear-apparaten van een gebruiker uw watch-app hebben:
- zoek met de
NodeClient
alle horloges die verbonden zijn met de telefoon van de gebruiker. Zie het voorbeeld voor meer informatie. - controleer met de
CapabilityClient
welke horloges van de gebruiker uw app hebben geïnstalleerd. - als uw app niet op alle horloges van de gebruiker is geïnstalleerd (vergelijk de resultaten van Stap 1 met de resultaten van Stap 2), laat de gebruiker de Play Store openen op de resterende Wear-apparaten vanaf de telefoon via de
RemoteIntent.startRemoteActivity()
methode. Specifiek, gebruik maken van de markt URI voor de Wear app (die kan verschillen van de URI van uw telefoon app). Gebruik bijvoorbeeld een markt-URI zoals:market://details?id=com.example.android.wearable.wear.finddevices
locatiegegevens voor horloges gekoppeld aan iPhones
voor horloges gekoppeld aan iPhones moeten ontwikkelaars de Fused Location Provider (FLP) gebruiken om locatiegegevens op een horloge te krijgen. Zie locatie detecteren bij slijtage.
als de begeleidende telefoon beschikbaar is, gebruikt FLP de begeleidende telefoon voor locatiegegevens.
verkrijg alleen de benodigde gegevens
in het algemeen dient u bij het verkrijgen van gegevens via internet alleen de benodigde gegevens te verkrijgen. Anders kunt u onnodig latency, geheugengebruik en batterijgebruik introduceren.
wanneer een horloge is verbonden via een Bluetooth LE-verbinding, heeft uw app mogelijk toegang tot een bandbreedte van slechts 4 kilobyte per seconde, afhankelijk van het horloge. Daarom worden de volgende stappen aanbevolen:
- Controleer uw netwerkaanvragen en-antwoorden op extra gegevens die alleen voor een telefoon-app
- grote afbeeldingen verkleinen voordat u ze over een netwerk verzendt naar een watch
zie Toegang tot het netwerk met hoge bandbreedte voor gevallen waarin een netwerk met hoge bandbreedte nodig is.
aanvullende codemonsters
het WearVerifyRemoteApp-Monster toont verder het gebruik aan van de API ‘ s die op deze pagina worden behandeld.