Android Automotive OS için park edilmiş uygulamalar derleme

Android Automotive OS, sürüş sırasında kullanılmak üzere tasarlanmış uygulamaların yanı sıra park halindeyken kullanılabilecek tarayıcıları, oyunları ve video uygulamalarını destekler. Sadece birkaç küçük değişiklikle, diğer geniş ekranlı cihazlara gönderdiğiniz uygulamayı arabalara da gönderebilirsiniz.

Mevcut uygulamanızı Android Automotive OS emülatöründe test etme

Uygulamanızı Android Automotive OS için oluşturmaya başlamak üzere önce mevcut uygulamanızı bir Android Automotive OS emülatöründe test edin. Bir emülatör ayarlamak için Android Automotive OS emülatörünü kullanarak test etme başlıklı makaledeki adımları uygulayın. Ardından, Uygulamanızı emülatörde çalıştırma başlıklı makaledeki talimatları uygulayarak uygulamayı çalıştırabilirsiniz.

Uygulamanızı çalıştırırken aşağıdakiler gibi uyumluluk sorunlarına dikkat edin:

  • Bilgi-eğlence ekranlarının yönü sabittir. Araba uygulaması kalite yönergelerini karşılamak için uygulamaların hem dikey hem de yatay yönleri desteklemesi gerekir.
  • Diğer cihazlarda kullanılabilen API'ler Android Automotive OS'te kullanılamayabilir. Örneğin, bazı Google Play Hizmetleri API'leri Android Automotive OS'te kullanılamaz. Bu sorunların nasıl ele alınacağı hakkında ayrıntılı bilgi için Özellikleri devre dışı bırakma bölümüne bakın.

Uygulamanızın manifest dosyalarını yapılandırma

Android Automotive OS cihazları hedeflemek için uygulamanızda belirli manifest girişleri olmalıdır. Android Automotive OS cihazlara dağıtım özelliğini etkinleştirdikten sonra, uyumlu uygulamalar, araçta kullanımlarının güvenli olmasını sağlamak için manuel bir inceleme sürecinden geçer. Daha fazla bilgi için Araçlara dağıtın başlıklı makaleyi inceleyin.

Gerekli Android Automotive OS özellikleri

Android Automotive OS için oluşturulan uygulamaların, bir araçta Play Store'da listelenmek üzere android.hardware.type.automotive özelliğinin AndroidManifest.xml dosyasına <uses-feature> öğesi eklenmesi gerekir:

<manifest ...>
  ...
  <!--
    Depending on the track you choose to distribute your app, the android:required attribute can
    also be "false" or left unset. See Choose a track for Android Automotive OS.
  -->
  <uses-feature
      android:name="android.hardware.type.automotive"
      android:required="[true|false]" />
  ...
</manifest>

Android Automotive OS için oluşturulan uygulamalar, önceki kod örneğinde gösterilen öğeye ek olarak kök <manifest> öğesine aşağıdaki <uses-feature> öğelerini eklemelidir:

<uses-feature
  android:name="android.hardware.wifi"
  android:required="false"/>
<uses-feature
  android:name="android.hardware.screen.portrait"
  android:required="false"/>
<uses-feature
  android:name="android.hardware.screen.landscape"
  android:required="false"/>

Bu özellikleri açıkça gerekli değil olarak ayarlamak, Android Automotive OS cihazlardaki mevcut donanım özellikleriyle uygulamanızın çakışmamasını sağlar.

Dikkat dağıtmaya yönelik optimize edilmiş etkinlik olmadığından emin olun

Uygulamanızın yalnızca park halindeyken kullanılabilmesini sağlamak için aşağıdaki <meta-data> öğesini manifest dosyanızdaki herhangi bir <activity> öğesine eklemeyin:

<!-- NOT ALLOWED -->
<meta-data
  android:name="distractionOptimized"
  android:value="true"/>

Bu meta veriler olmadan, sürücü dikkatinin dağılmaması için araba sürüş moduna girdiğinde uygulamanızın etkinlikleri işletim sistemi tarafından otomatik olarak engellenir. Bu, onPause yaşam döngüsü geri çağırma yöntemi olarak gerçekleşir. Bu sırada uygulamanızdan hem video hem de ses oynatmayı duraklatmanız gerekir.

Kategoriye özel manifest girişleri

Park edilmiş tüm uygulamalar için geçerli olan yukarıdaki şartlara ek olarak, video ve oyun kategorileri için ek şartlar vardır:

Uygulamanızı Android Automotive OS için optimize etme

Kullanıcılarınıza mümkün olan en iyi deneyimi sunmak için Android Automotive OS için uygulamanızı oluştururken aşağıdakileri göz önünde bulundurun.

Büyük ekranlar için optimize etme

Android Automotive OS araçlarındaki ekranlar boyut, çözünürlük ve en-boy oranı açısından telefonlara kıyasla tabletlere ve katlanabilir cihazlara daha benzer. Bu nedenle, uygulamanızı büyük ekranlar için optimize etmek arabadaki kullanıcılarınıza da fayda sağlar.

Özellikle büyük ekran boyutlarından en iyi şekilde yararlanma hakkında ayrıntılı bilgi için Farklı ekran boyutlarını destekleme ve Kullanıcı arayüzünüzü duyarlı düzenlere taşıma kılavuzlarına, tasarım ilhamı ve rehberlik için de medya ve oyun galerilerine bakın.

Giriş uyumluluğu gibi diğer büyük ekran optimizasyonları Android Automotive OS için doğrudan yararlı olmasa da kullanıcı deneyimini iyileştirebilir. Örneğin, klavye gezinme özelliği dönen gezinme ile aynı API'leri kullandığından, burada yapılan optimizasyonlar her iki form faktörüne de fayda sağlayabilir.

Pencere içe eklemeleri ve ekran kesikleriyle çalışma

Diğer form faktörlerinde olduğu gibi Android Automotive OS de durum ve gezinme çubukları gibi sistem kullanıcı arayüzü öğelerini ve dikdörtgen olmayan ekranlar için destek içerir.

Varsayılan olarak uygulamalar, sistem çubuklarıyla veya ekran kesikleriyle çakışmayan bir alanda çizilir. Ancak uygulamanızın sistem çubuklarını gizlemesini, arkalarında içerik çizmesini veya Uygulamanızı pencere içlerinde düzenleyin bölümünde açıklandığı gibi ekranda bir kesitte içerik göstermesini isteyebilirsiniz. Uygulamanız bu işlemlerin herhangi birini yapıyorsa uygulamanızın Android Automotive OS cihazlarının ekosisteminde sorunsuz şekilde çalışması için aşağıdaki alt bölümlere bakın.

Sistem çubukları, tam ekran modu ve uçtan uca oluşturma

Araçlardaki sistem çubukları, diğer form faktörlerine göre farklı boyut ve konumlarda olabilir. Örneğin, gezinme çubukları ekranın sol, sağ veya alt tarafına yerleştirilebilir. Üstte bir durum çubuğu ve altta bir gezinme çubuğu olsa bile (çoğu telefon ve tablette olduğu gibi), bu öğelerin boyutu arabalarda muhtemelen çok daha büyük olacaktır.

Ayrıca Android Automotive OS, OEM'lerin uygulamaların immersive moda girmek ve immersive moddan çıkmak için sistem çubuklarını gösterip gizlemeyeceğini kontrol etmesine olanak tanır. Örneğin, OEM'ler uygulamaların sistem çubuklarını gizlemesini engelleyerek klima kontrolleri gibi araç kontrollerinin ekranda her zaman erişilebilir olmasını sağlayabilir. Bir OEM, uygulamaların sistem çubuklarını kontrol etmesini engellediyse bir uygulama, sistem çubuklarını göstermek veya gizlemek için WindowInsetsController (veya WindowInsetsControllerCompat) API'lerini çağırdığında hiçbir şey olmaz. Uygulamanızın içe eklemeleri değiştirip değiştiremediğini nasıl algılayacağınız hakkında daha fazla bilgi edinmek için show ve hide dokümanlarına bakın.

Benzer şekilde OEM'ler, sistem çubuklarının ve barların içerdiği öğelerin her zaman net bir şekilde görülebilmesi için uygulamaların sistem çubuklarının rengini ve saydamlığını ayarlayıp ayarlayamayacağını da kontrol edebilir. Uygulamanız kenardan kenara çiziyorsa sistem çubuklarının arkasında yalnızca kritik olmayan içeriğin çizildiğinden emin olun. Cihaz OEM'si çubukların rengini veya saydamlığını ayarlamayı engelliyorsa bu içerik görünmeyebilir.

<!-- Depending on OEM configuration, these style declarations
     (and the corresponding runtime calls) may be ignored -->
<style name="...">
  <item name="android:statusBarColor">...</item>
  <item name="android:navigationBarColor">...</item>
  <item name="android:windowTranslucentStatus">...</item>
  <item name="android:windowTranslucentNavigation">...</status>
</style>

Uygulamanız kenarlara kadar uzanıyorsa sistem çubuklarının boyutu, sayısı, türü veya konumu hakkında varsayımlarda bulunmayın. Bunun yerine, uygulamanızın içeriğini sistem çubuklarına göre yerleştirmek için pencere içe ekleme API'lerini kullanın. Bu API'lerin nasıl kullanılacağı hakkında daha fazla bilgi için Uygulamanızda içerikleri kenardan kenara görüntüleme başlıklı makaleyi inceleyin. Hiçbir zaman önerilmez ancak diğer cihazlarda içeriği güvenli alanda tutabilecek sabit kodlanmış dolgu değerleri, araçlarda bu işlevi göremeyebilir.

Düzensiz şekilli ekranlara uyum sağlama

Bazı araçlarda dikdörtgen ekranlara ek olarak Şekil 1'de gösterildiği gibi düzensiz şekilli ekranlar da bulunabilir:

Sağ tarafı kavisli bir ekrana sahip Android Automotive OS cihazın şeması.
Şekil 1: Sağ tarafı kavisli bir ekrana sahip Android Automotive OS cihaz. Yeşil alan, eğrinin ekrandaki kesiğinin sınır kutusuyla çakışmayan güvenli dikdörtgendir.

Uygulamanız kenardan kenara oluşturulmuyorsa güvenli alanda oluşturulması için herhangi bir işlem yapmanız gerekmez.

Uygulamanız kenardan kenara oluşturuluyorsa ekrandaki kesiklerle ilgili olarak nasıl davranmasını istediğinizi seçebilirsiniz. Bunu, uygulamanızın teması için android:windowLayoutInDisplayCutoutMode özelliğini ayarlayarak veya çalışma zamanında pencerenin layoutInDisplayCutoutMode özelliğini değiştirerek kaynaklardan yararlanarak yapabilirsiniz.

Android Automotive OS cihazlarındaki ekran kesiklerinin türleri mobil cihazlardaki kesiklerden farklı olduğundan, mobil cihazlardaki kesiklerle uyumlu şekilde optimize edilmiş davranışa sahip LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT veya LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES öğelerini kullanmayın. Bunun yerine, kesme noktasını her zaman atlamak veya her zaman girmek için LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER veya LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS kullanın. İkincisini seçerken, ekran kesikleriyle ilgili API'ler hakkında daha fazla bilgi için Ekran kesiklerini destekleme başlıklı makaleyi inceleyin.

Uygulamanız ekrandaki kesik alana oluşturuluyorsa ve Android Automotive OS ile mobil cihazlar arasında farklı bir davranış olmasını istiyorsanız uygulamanız bu davranışı çalışma zamanında ayarlıyorsa Özellikleri devre dışı bırakma başlıklı makaleyi, uygulamanız bu davranışı kaynak dosyaları kullanarak ayarlıyorsa Alternatif kaynaklar kullanma başlıklı makaleyi inceleyin.

Özellikleri devre dışı bırakma

Mevcut bir mobil uygulamayı Android Automotive OS'te kullanıma sunuyorsanız belirli özellikler ve işlevler alakalı olmayabilir veya kullanılamayabilir. Örneğin, arabalar genellikle kameralara erişim sağlamaz. Ayrıca Android Automotive OS'te yalnızca Google Play Hizmetleri'nin bir alt kümesi kullanılabilir. Daha fazla bilgi için Arabalar için Google Play Hizmetleri başlıklı makaleyi inceleyin.

Uygulamanın Android Automotive OS'te çalışıp çalışmadığını tespit etmek için PackageManager.hasSystemFeature API'sini kullanabilirsiniz. Bunun için aşağıdaki örnekte gösterildiği gibi FEATURE_AUTOMOTIVE özelliğini kontrol edebilirsiniz:

Kotlin

val packageManager: PackageManager = ... // Get a PackageManager from a Context
val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
if (isCar) {
  // Enable or disable a given feature
}

Java

PackageManager packageManager = ... // Get a PackageManager from a Context
boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
if (isCar) {
  // Enable or disable a given feature
}

Alternatif olarak, uygulamanızda Android Auto bileşeni de varsa uygulamanın Android Automotive OS'te mi yoksa Android Auto'da mı çalıştığını ya da hiç araca bağlı olup olmadığını tespit etmek için Arabalar için Android Uygulama Kitaplığı'ndaki CarConnection API'sini kullanabilirsiniz.

Resim içinde resim (PiP) özelliğinin kullanılabilir olup olmadığını kontrol etmek ve uygun şekilde tepki vermek için belirlenmiş en iyi uygulamaları uygulayın.

Çevrimdışı senaryoları işleme

Arabalar giderek daha fazla internete bağlansa da uygulamaların, aşağıdaki gibi durumlarda internet bağlantısı olmadan çalışmayı yönetmesi önerilir:

  • Kullanıcılar, otomobil üreticisinin abonelik paketi kapsamında sunulan mobil verileri devre dışı bırakabilir.
  • Mobil verilere erişim bazı bölgelerde sınırlı olabilir.
  • Kablosuz radyo bulunan araçlar kablosuz kapsama alanında olmayabilir veya OEM, mobil ağ tercih ettiği için kablosuz bağlantıyı kapatmış olabilir.

İnternet erişimine bağlı işlevleri (ör. çevrimdışı içerik sunarak) uygun şekilde azaltarak uygulamanızda bu senaryoları ele almaya hazır olun. Daha fazla bilgi için ağ bağlantısını optimize etmeyle ilgili en iyi uygulamalara bakın.

Alternatif kaynaklar kullanma

Uygulamanızı arabalara uyarlamak için Android Automotive OS aracında çalışırken alternatif kaynaklar sağlamak amacıyla car kaynak tanımlayıcısı kullanabilirsiniz. Örneğin, dolgu değerlerini depolamak için boyut kaynaklarını kullanıyorsanız dokunma hedeflerini büyütmek için car kaynak kümesi için daha büyük bir değer kullanabilirsiniz.

Uygulamanızı dağıtma

Uygulamanızı kategorisine göre araba uygulaması kalite yönergelerine göre test ettikten sonra, Google Play'i kullanarak Google ile yerleşik Cars'a dağıtabilirsiniz. Yayınlama süreciyle ilgili daha fazla bilgi için Araçlara dağıtma başlıklı makaleyi inceleyin.

Park edilmiş uygulamalarla ilgili geri bildirimde bulunma

Android Automotive OS için park edilmiş uygulamanızı geliştirirken bir sorunla karşılaşırsanız veya özellik isteğiniz varsa Google Sorun Takip Aracı'nı kullanarak bildirebilirsiniz. Sorun şablonunda istenen tüm bilgileri doldurduğunuzdan emin olun. Yeni bir sorun bildirmeden önce, sorunun sorun listesinde bildirilip bildirilmediğini kontrol edin. İzleyicideki bir sorunun yıldızını tıklayarak sorunlara abone olabilir ve oy verebilirsiniz. Daha fazla bilgi için Bir soruna abone olma başlıklı makaleyi inceleyin.

Yeni sorun oluşturma