Kartlar uygulama olmadığından farklı mekanizmalar kullanılarak dağıtılır ve başlatılır.
Bir cihazda geliştirici seçenekleri etkinleştirildiğinde (emülatörlerde bu özellikler varsayılan olarak etkindir) kart geliştirmeyi destekleyen ek özellikler hem Android Studio hem de adb
'te kullanılabilir hale gelir.
Kartları dağıtma
Kartınızı dağıtmak için Uygulamanızı oluşturma ve çalıştırma bölümünde açıklandığı gibi, Android Studio'yu kullanarak uygulamanızı fiziksel bir cihaza veya emülatöre yükleyebilirsiniz. Ardından, normal kullanıcılarla aynı adımları uygulayarak kartı kart bandına manuel olarak ekleyin.
Etkin geliştirme sırasında Android Studio'nun "Wear OS Kartı" Yapılandırma Çalıştırma/Hata Ayıklama özelliğini kullanmak daha kolay ve hızlı olabilir. Bu yöntem, kartınızı otomatik olarak dağıtır ve etkinleştirir. Böylece, ek manuel adımlar olmadan anında etkileşim kurabilirsiniz.
Yapılandırmayı otomatik olarak oluşturma
Kartları dağıtmanın ve çalıştırmanın en kolay yolu, kenar boşluğundaki "hizmeti çalıştır" simgesini kullanmaktır. Bu işlem, henüz mevcut değilse otomatik olarak bir çalıştırma yapılandırması oluşturur. Daha fazla bilgi için Wear OS çalıştırma/hata ayıklama yapılandırmaları başlıklı makaleyi inceleyin.


Yapılandırmayı manuel olarak oluşturma
Otomatik yapılandırma işe yaramazsa veya sonuç üzerinde daha fazla kontrol sahibi olmak istiyorsanız aşağıdaki talimatları inceleyin. Ekran görüntüleri Android Studio Meerkat'ten (2024.3.1) alınmıştır.
Başlık çubuğundan "⋮" ("hamburger") seçeneğini belirleyin.
"Düzenle…"yi seçin.
Görünen iletişim kutusunda yapılandırma eklemek için "+" işaretini seçin.
Yeni yapılandırmanın türü olarak "Wear OS Kartı"nı seçin.
Yapılandırmanız için bir ad girin ve uygun modülü ve karoyu seçin.
"Tamam"a dokunun. Yapılandırmanız başlık çubuğunda görünür. "▷" düğmesine tıklayın ("çalıştır") ve kartınız dağıtılıp etkinleştirilir.
Android Studio'da karoları önizleme
Android Studio Koala özellik paketinden itibaren Wear OS uygulamanızın kutularının anlık görüntülerini görüntüleyebilirsiniz. Bu panel, özellikle karo görünümünüz koşullara göre değişiyorsa (ör. cihazın ekran boyutuna bağlı olarak farklı içerikler veya bir spor etkinliğinin devre arası olması) kullanışlıdır.

Bağımlılıklar ekleme
Uygulamanızın build.gradle.kts
veya build.gradle
dosyasına aşağıdaki bağımlılıkları ekleyin:
dependencies {
implementation("androidx.wear.tiles:tiles-tooling-preview:1.5.0-alpha10")
debugImplementation("androidx.wear.tiles:tiles-tooling:1.5.0-alpha10")
implementation("androidx.wear:wear-tooling-preview:1.0.0")
}
Kart önizlemelerini yapılandırma
Kartınızın farklı Wear OS ekran boyutlarındaki görünümünün önizlemesini görmek için @Preview
ek açıklamasını ekleyin ve device
parametresini iletin. Bu @Preview
ek açıklamanın, birleştirilebilir önizlemeler için kullandığınızdan farklı bir paketten geldiğini unutmayın.
import androidx.wear.tiles.tooling.preview.Preview
@Preview(device = WearDevices.SMALL_ROUND)
@Preview(device = WearDevices.LARGE_ROUND)
fun tilePreview(context: Context) = TilePreviewData(
onTileRequest = { request ->
TilePreviewHelper.singleTimelineEntryTileBuilder(
buildMyTileLayout()
).build()
}
)
Kaynak ekleme ve kaydetme
Kartınızda Android kaynakları kullanılıyorsa bunları aşağıdaki kod snippet'inde gösterildiği gibi TilePreviewData
parametresinin onTileResourceRequest
parametresine kaydetmeniz gerekir:
import androidx.wear.tiles.tooling.preview.Preview @Preview(device = WearDevices.SMALL_ROUND) fun previewWithResources(context: Context) = TilePreviewData( onTileResourceRequest = { request -> Resources.Builder() .setVersion(myResourcesVersion) .addIdToImageMapping( myImageId, getImageById(R.drawable.myDrawableImageId)) .build() }, onTileRequest = { request -> TilePreviewHelper.singleTimelineEntryTileBuilder( buildMyTileLayout() ).build() } ) fun getImageById( @DrawableRes id: Int, ): ImageResource = ImageResource.Builder() .setAndroidResourceByResId( AndroidImageResourceByResId.Builder() .setResourceId(id) .build(), ) .build()
Platform veri kaynaklarından belirli değerleri gösterme
Kartınızda nabız, kalori, mesafe ve adım gibi platform verileri kullanılıyorsa kartta bu veriler için varsayılan değerler gösterilir.
Belirli bir değeri göstermek için TilePreviewData
nesnesini oluştururken aşağıdaki kod snippet'inde gösterildiği gibi platformDataValues
parametresini ayarlayın:
import androidx.wear.tiles.tooling.preview.Preview @Preview(device = WearDevices.SMALL_ROUND) fun previewWithPlatformOverride(context: Context) = TilePreviewData( platformDataValues = PlatformDataValues.of( PlatformHealthSources.Keys.HEART_RATE_BPM, DynamicDataBuilders.DynamicDataValue.fromFloat(160f) ), onTileRequest = { request -> TilePreviewHelper.singleTimelineEntryTileBuilder( buildMyTileLayout() ).build() } )
adb'yi kullanarak kartları değiştirme
adb
, geliştirme sırasında karoları programatik olarak yüklemek, kaldırmak ve etkinleştirmek için kullanılabilir.
Aşağıdaki komutlarda ComponentName
, paket adından ve bu paket içindeki bir sınıftan (ör. com.example.wear.tiles/com.example.wear.tiles.PreviewTileService
) oluşan bir dizedir.
add-tile
COMPONENT_NAME
tarafından sağlanan bir karo ekler ve dizini döndürür.
adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation add-tile --ecn component [COMPONENT_NAME]
Örnek çıkış:
Broadcast completed: result=1, data="Index=[0]"
Bantta zaten mevcut olan bir kart kaldırılır ve aynı konuma yeniden eklenir. Aksi takdirde Index[0]
konumuna eklenir. Ayrıca, bant maksimum kapasitesindeyse yeni karoya yer açmak için son karo kaldırılır.
show-tile
TILE_INDEX
dizinindeki karoyu etkinleştirin.
adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SYSUI --es operation show-tile --ei index [TILE_INDEX]
Örnek çıkış:
Broadcast completed: result=1
remove-tile
Banttaki COMPONENT_NAME
ile ilişkili tüm kutu örneklerini kaldırır.
adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation remove-tile --ecn component [COMPONENT_NAME]
Örnek çıkış:
result=1, data="Tile(s) removed."
Döndürülen değerler
- result=0: Büyük olasılıkla Wear OS sürümü çok eski olduğu veya hata ayıklama işlemi çalışmadığı için bu komuta hiçbir yayın alıcı yanıt vermedi.
- result=1: Başarılı.
- result>1: Hata.