Wear OS cihazlarda kartlar, bağımsız sürümlere sahip iki temel bileşen tarafından oluşturulur. Uygulama karolarınızın tüm cihazlarda düzgün çalışmasını sağlamak için bu temel mimariyi anlamanız önemlidir.
- Jetpack kartlarıyla ilgili kitaplıklar: Bu kitaplıklar (Wear Kartları ve Wear ProtoLayout dahil) uygulamanıza yerleştirilir ve geliştirici olarak sürümlerini siz kontrol edersiniz. Uygulamanız, sistemdeki
onTileRequest()
çağrısına yanıt olarak birTileBuilder.Tile
nesnesi (Kartınızı temsil eden veri yapısı) oluşturmak için bu kitaplıkları kullanır. - ProtoLayout Oluşturucu: Bu sistem bileşeni,
Tile
nesnesini ekranda oluşturmaktan ve kullanıcı etkileşimlerini yönetmekten sorumludur. Oluşturucunun sürümü, uygulama geliştirici tarafından kontrol edilmez ve aynı donanıma sahip cihazlar arasında bile değişiklik gösterebilir.
Kartın görünümü veya davranışı hem uygulamanızın Jetpack Kartlar kitaplığı sürümlerine hem de kullanıcının cihazındaki ProtoLayout Oluşturucu sürümüne göre değişiklik gösterebilir. Örneğin, bir cihaz döndürme veya nabız verilerinin görüntülenmesini desteklerken başka bir cihaz bu özellikleri desteklemeyebilir.
Bu dokümanda, uygulamanızın Tiles kitaplığının ve ProtoLayout Oluşturucu'nun farklı sürümleriyle uyumlu olmasını sağlamanın yanı sıra daha yeni Jetpack kitaplığı sürümlerine nasıl geçeceğiniz açıklanmaktadır.
Uyumluluğu göz önünde bulundurun
Çeşitli cihazlarda düzgün çalışan bir Kart oluşturmak için aşağıdakileri göz önünde bulundurmanız gerekir.
Oluşturucu sürümünü algılama
- onTileRequest() yönteminize iletilen
DeviceParameters
nesnesiningetRendererSchemaVersion()
yöntemini kullanın. Bu yöntem, cihazdaki ProtoLayoutRenderer'ın ana ve alt sürüm numaralarını döndürür. - Ardından, Kartınızın tasarımını veya davranışını algılanan oluşturma aracı sürümüne göre uyarlamak için
onTileRequest()
uygulamanızda koşullu mantık kullanabilirsiniz.- Örneğin, belirli bir animasyon desteklenmiyorsa bunun yerine statik bir resim gösterebilirsiniz.
@RequiresSchemaVersion
ek açıklaması
- ProtoLayout yöntemlerindeki
@RequiresSchemaVersion
ek açıklaması, söz konusu yöntemin açıklandığı şekilde davranması için gereken minimum oluşturma şeması sürümünü belirtir (örnek).- Cihazda mevcut olandan daha yüksek bir oluşturma aracı sürümü gerektiren bir yöntemi çağırmak uygulamanızın kilitlenmesine neden olmaz ancak içeriğin görüntülenmemesine veya özelliğin yoksayılmasına neden olabilir.
Örnek
override fun onTileRequest(
requestParams: TileService.TileRequest
): ListenableFuture<Tile> {
val rendererVersion =
requestParams.deviceConfiguration.rendererSchemaVersion
val tile = Tile.Builder()
if (
rendererVersion.major > 1 ||
(rendererVersion.major == 1 && rendererVersion.minor >= 300)
) {
// Use a feature supported in renderer version 1.300 or later
tile.setTileTimeline(/* ... */ )
} else {
// Provide fallback content for older renderers
tile.setTileTimeline(/* ... */ )
}
return Futures.immediateFuture(tile.build())
}
Farklı oluşturma aracı sürümleriyle test etme
Kartlarınızı farklı oluşturma aracı sürümleriyle test etmek için Wear OS emülatörünün farklı sürümlerine dağıtın. (Fiziksel cihazlarda ProtoLayout Oluşturucu güncellemeleri Play Store veya sistem güncellemeleri tarafından yayınlanır. Belirli bir oluşturma aracı sürümünün yüklenmesini zorunlu kılmak mümkün değildir.)
Android Studio'nun Kart Önizleme özelliği, kodunuzun bağlı olduğu Jetpack ProtoLayout kitaplığına yerleştirilmiş bir oluşturma aracı kullanır. Bu nedenle, kartları test ederken farklı Jetpack kitaplığı sürümlerine bağlı olmak da bir yaklaşımdır.
Jetpack kitaplıklarını yükseltme
Kartlarınızın sisteme sorunsuz bir şekilde entegre olmasını sağlayacak kullanıcı arayüzü değişiklikleri de dahil olmak üzere en son geliştirmelerden yararlanmak için Jetpack Kart kitaplıklarınızı güncelleyin.
Kartlar 1.2 / ProtoLayout 1.0'a taşıma
1.2 sürümü itibarıyla çoğu Kart düzeni API'si androidx.wear.protolayout
ad alanındadır. En son API'leri kullanmak için kodunuzda aşağıdaki taşıma adımlarını tamamlayın.
Bağımlılıkları güncelleme
Uygulama modülünüzün derleme dosyasında aşağıdaki değişiklikleri yapın:
Groovy
// Removeimplementation 'androidx.wear.tiles:tiles-material:version'// Include additional dependencies implementation "androidx.wear.protolayout:protolayout:1.2.1" implementation "androidx.wear.protolayout:protolayout-material:1.2.1" implementation "androidx.wear.protolayout:protolayout-expression:1.2.1" // Update implementation "androidx.wear.tiles:tiles:1.4.1"
Kotlin
// Removeimplementation("androidx.wear.tiles:tiles-material:version")// Include additional dependencies implementation("androidx.wear.protolayout:protolayout:1.2.1") implementation("androidx.wear.protolayout:protolayout-material:1.2.1") implementation("androidx.wear.protolayout:protolayout-expression:1.2.1") // Update implementation("androidx.wear.tiles:tiles:1.4.1")
Ad alanlarını güncelleme
Uygulamanızın Kotlin ve Java tabanlı kod dosyalarında aşağıdaki güncellemeleri yapın. Alternatif olarak bu ad alanını yeniden adlandırma komut dosyasını da çalıştırabilirsiniz.
- Tüm
androidx.wear.tiles.material.*
içe aktarma işlemleriniandroidx.wear.protolayout.material.*
ile değiştirin. Bu adımıandroidx.wear.tiles.material.layouts
kitaplığı için de tamamlayın. Diğer
androidx.wear.tiles.*
içe aktarma işlemlerinin çoğunuandroidx.wear.protolayout.*
ile değiştirin.androidx.wear.tiles.EventBuilders
,androidx.wear.tiles.RequestBuilders
,androidx.wear.tiles.TileBuilders
veandroidx.wear.tiles.TileService
için içe aktarma işlemleri aynı kalacak.Desteği sonlandırılan TileService ve TileBuilder sınıflarındaki birkaç yöntemi yeniden adlandırın:
TileBuilders
:getTimeline()
-getTileTimeline()
vesetTimeline()
-setTileTimeline()
arasıTileService
:onResourcesRequest()
,onTileResourcesRequest()
olarak değiştirildiRequestBuilders.TileRequest
:getDeviceParameters()
-getDeviceConfiguration()
,setDeviceParameters()
-setDeviceConfiguration()
,getState()
-getCurrentState()
vesetState()
-setCurrentState()
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Kartları kullanmaya başlama
- Wear OS'te ilk kartınızı oluşturma
- TV için Oluştur'a giriş