Android Automotive OS için park edilmiş uygulamalar derleme

Android Automotive OS, araba kullanırken kullanılmak üzere geliştirilen uygulamaların yanı sıra park halinde kullanılmak üzere tarayıcılar, oyunlar ve video uygulamalarını da destekler. Yalnızca birkaç küçük değişiklikle diğer büyük ekranlı cihazlara yaptığınız gibi aynı uygulamayı arabalara da gönderebilirsiniz.

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

Android Automotive OS için uygulamanızı derlemeye başlamak için önce mevcut uygulamanızı bir Android Automotive OS emülatöründe test edin. Emülatör kurulumu yapmak için Android Automotive OS emülatörünü kullanarak test etme bölümündeki adımları uygulayın. Daha sonra Uygulamanızı emülatörde çalıştırma sayfasındaki 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önergelerine uymak 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ğına dair ayrıntılar 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'i hedefleyebilmeniz için uygulamanızın belirli manifest girişlerinin olması gerekir. Bunlarla, Android Automotive OS'i hedefleyen uygulamalar ayrı bir Automotive OS sürüm türü kullanılarak Play Store'a gönderilir. Arabada güvenle kullanılabildiğinden emin olmak için bu cihazlar manuel inceleme sürecine tabi tutulur. Daha fazla ayrıntı için Arabalar için Android uygulamalarını dağıtma konusuna bakın.

Gerekli Android Automotive OS özellikleri

Android Automotive OS için geliştirilen uygulamaların, Play Store'da arabada listelenmesini istiyorsanız AndroidManifest.xml dosyasına aşağıdaki <uses-feature> öğesini dahil etmesi gerekir:

<manifest ...>
    ...
    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />
    ...
</manifest>

Otomotiv dışındaki kanallara gönderilen uygulamalar, arabaya özgü donanıma bağlı olamayacağından önceki kod örneğinde gösterilen <uses-feature> öğesini beyan edemez. Bu nedenle, hem otomotiv hem de otomotiv dışındaki cihazlarda aynı uygulamayı sunmak için, biri otomotiv cihazları, diğeri mobil cihazlar için olmak üzere en az iki çeşit üretmeniz gerekir. Bu ayrı aromaların nasıl oluşturulacağı hakkında daha fazla bilgi için aşağıdaki belgelere bakın:

Uygulamanın iki türü de aynı paket adını paylaşabilir ancak Play Store kanallarına ayrı olarak yüklendiklerinden farklı sürüm kodlarına sahip olmaları gerekir.

Alternatif olarak, ayrı lezzetler kullanmak yerine mobil ve otomotiv APK'larınız veya App Bundle'larınız için ayrı paket adları kullanabilirsiniz. Her yaklaşımın artılarını anlamak için medya uygulaması geliştirici kılavuzundaki Paket adları bölümüne bakın.

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

<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 özelliklerin "gerekli değil" değerine açık bir şekilde ayarlanması, uygulamanızın Android Automotive OS cihazlarındaki mevcut donanım özellikleriyle çakışmadığından emin olmanıza yardımcı olur.

Dikkat dağıtan unsurlara göre optimize edilmiş etkinlik olmadığından emin olun

Uygulamanızın yalnızca park edilmişken kullanılabildiğinden emin olmak için aşağıdaki <meta-data> öğesini manifest'inizdeki hiçbir <activity> öğesine eklemeyin:

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

Bu meta veriler olmadığında, sürücünün dikkatini dağıtan öğeleri azaltmak için uygulama aktiviteleri, araba sürüş moduna girdiğinde işletim sistemi tarafından otomatik olarak engellenir. Bu işlem, onPause yaşam döngüsü geri çağırması olarak gerçekleşir. Bu geri çağırma sırasında uygulamanızdan hem video hem de ses oynatmayı duraklatmanız gerekir.

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

Kullanıcılarınıza mümkün olan en iyi deneyimi sunmak amacıyla, uygulamanızı Android Automotive OS için geliştirirken aşağıdakileri aklınızda bulundurun.

Büyük ekranlar için optimize etme

Android Automotive OS araçlarda bulunan ekranlar, boyut, çözünürlük ve en boy oranı bakımından tabletlere ve katlanabilir cihazlara kıyasla telefonlara daha benzerdir. Bu nedenle, uygulamanızı büyük ekranlar için optimize etmek arabalarda da kullanıcılarınıza fayda sağlar.

Özellikle, büyük ekran boyutlarından en iyi şekilde nasıl yararlanabileceğinize ilişkin ayrıntılar için Farklı ekran boyutlarını destekleme ve Kullanıcı arayüzünüzü duyarlı düzenlere taşıma kılavuzlarının yanı sıra tasarım konusunda ilham ve rehberlik almak için medya ve oyun galerilerine bakın.

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

Pencere parçaları ve ekran kesimleriyle çalışın

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

Varsayılan olarak uygulamalar, sistem çubukları veya ekran kesimleriyle çakışmayan bir alanda çizim yapar. Ancak, Uygulamanızı pencere pencerelerinin içine yerleştirme bölümünde açıklandığı gibi uygulamanızın sistem çubuklarını gizlemesini, arkalarına içerik çizmesini veya içeriği ekran kesiminde göstermesini isteyebilirsiniz. Uygulamanız bunlardan herhangi birini yapıyorsa uygulamanızın Android Automotive OS cihaz ekosisteminde iyi çalışmasını sağlamayla ilgili ayrıntılar için aşağıdaki alt bölümlere bakın.

Sistem çubukları, yoğun içerik modu ve uçtan uca oluşturma

Arabalardaki sistem çubuklarının boyutları ve konumları, diğer form faktörlerine göre farklı olabilir. Örneğin, gezinme çubukları ekranın soluna, sağına veya altına yerleştirilebilir. Üstte bir durum çubuğu, alt kısmında bir gezinme çubuğu (çoğu telefon ve tablette olduğu gibi) olsa bile, bu öğelerin boyutları arabalarda muhtemelen çok daha fazla olur.

Ayrıca Android Automotive OS, OEM'lerin uygulamaların kapsamlı moda girmek ve bu moddan çıkmak için sistem çubuklarını gösterip gösteremeyeceğini kontrol edebilmesini sağlar. Örneğin, OEM'ler uygulamaların sistem çubuklarını gizlemesini engelleyerek klima kontrolleri gibi araç kontrollerine ekranda her zaman erişilebilir olmalarını sağlayabilir. Bir OEM, uygulamaların sistem çubuklarını denetlemesini engellemişse 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 eklerde değişiklik yapıp yapamadığını nasıl tespit edeceğiniz hakkında daha fazla bilgi edinmek için show ve hide belgelerine bakın.

Benzer şekilde OEM'ler, uygulamaların sistem çubuklarının rengini ve yarı saydamlığını ayarlayıp ayarlayamayacağını da kontrol edebilir. Böylece çubuklar ve içerdikleri öğeler her zaman net bir şekilde görülebilir. Uygulamanız baştan sona çizim yapıyorsa sistem çubuklarının arkasına yalnızca kritik olmayan içeriğin çizilip çizilmediğini kontrol edin. Cihazın OEM'si, çubukların renginin veya yarı saydamlığının ayarlanmasını engellerse 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 tüm ayrıntılarıyla ilerlerse sistem çubuklarının boyutu, sayısı, türü veya konumuyla ilgili varsayımlarda bulunmayın. Bunun yerine, uygulamanızın içeriğini sistem çubuklarına göre yerleştirmek için pencere ek API'lerini kullanın. Bu API'leri nasıl kullanacağınızla ilgili daha fazla ayrıntı için Uygulamanızda içeriği uçtan uca görüntüleme bölümüne bakın. Hiçbir zaman önerilmese de, arabalarda bulunmayabilecek diğer cihazlardaki içeriği güvenli alanda tutabilecek sabit kodlu dolgu değerleri.

Düzensiz şekilli ekranlara uyum sağlama

Dikdörtgen ekranların yanı sıra bazı araçların ekranları Şekil 1'de gösterildiği gibi düzensiz şekilli olabilir:

Sağ tarafa eğimli bir ekranı olan bir Android Automotive OS cihazın şeması.
Şekil 1: Sağ tarafı eğimli ekranı olan bir Android Automotive OS cihaz. Yeşil alan, eğrinin ekran kesiminin sınırlayıcı kutusuyla çakışmayan güvenli dikdörtgendir.

Uygulamanız uçtan uca oluşturulmuyorsa güvenli alanda oluşturulması için herhangi bir şey yapmanız gerekmez.

Uygulamanız uçtan uca oluşturuyorsa ekran kesimlerine göre nasıl davranmasını istediğinizi seçebilirsiniz. Bunun için kaynakları kullanarak uygulamanızın teması için android:windowLayoutInDisplayCutoutMode özelliğini ayarlayabilir veya çalışma zamanında pencerenin layoutInDisplayCutoutMode özelliğini değiştirebilirsiniz.

Android Automotive OS cihazlardaki ekran kesimi türleri mobil cihazlardakilerden farklı olduğundan, mobil cihazlarda bulunan kesimlere göre optimize edilmiş davranışa sahip LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT veya LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES öğelerini kullanmayın. Bunun yerine, kesimi her zaman önlemek 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 kesimleriyle ilgili API'ler hakkında daha fazla bilgi için Ekran kesimlerini destekleme bölümüne bakın.

Uygulamanız, ekran kesiminde gösteriliyorsa ve Android Automotive işletim sistemi ile mobil cihazlar arasında farklı bir davranışta bulunmak istiyorsanız uygulamanız çalışma zamanında bu davranışı ayarlıyorsa yardım için Özellikleri devre dışı bırakma ve uygulamanız bu davranışı kaynak dosyaları kullanarak ayarlıyorsa Alternatif kaynakları kullanma konusuna bakın.

Özellikleri devre dışı bırak

Mevcut bir mobil uygulamayı Android Automotive OS'te kullanıma sunuyorsanız bazı özellikler ve işlevler alakalı veya kullanılabilir olmayabilir. Örneğin, arabalar genellikle kameralara erişim sağlamaz. Ayrıca Android Automotive OS'te Google Play hizmetlerinin yalnızca bir alt kümesi kullanılabilir. Daha fazla bilgi için Arabalar için Google Play Hizmetleri bölümüne bakın.

Aşağıdaki örnekte gösterildiği gibi, FEATURE_AUTOMOTIVE özelliğini kontrol ederek uygulamanın Android Automotive OS'te çalışıp çalışmadığını algılamak için PackageManager.hasSystemFeature API'yi kullanabilirsiniz:

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ızın bir Android Auto bileşeni de varsa Android for Cars Uygulama Kitaplığı'ndaki CarConnection API'sini kullanarak uygulamanın Android Automotive OS veya Android Auto ile çalışıp çalışmadığını ya da bir arabaya bağlı olup olmadığını tespit edebilirsiniz.

Pencere İçinde Pencere (PIP) özelliğinin kullanılabilir olup olmadığını kontrol etmek ve uygun şekilde tepki vermek için mevcut en iyi uygulamaları takip edin.

Çevrimdışı senaryoları işleme

Arabalar giderek daha fazla internete bağlanıyor olsa da uygulamaların, aşağıdaki gibi durumlarda internet bağlantısı olmadan çalışması önerilir:

  • Kullanıcılar, otomobil üreticisinin abonelik paketinin bir parçası olarak sunulan mobil veri kullanımını devre dışı bırakabilir.
  • Bazı alanlarda mobil veriye erişim sınırlı olabilir.
  • Kablosuz radyosu olan arabalar kablosuz ağ kapsama alanının dışında kalmış olabilir veya bir OEM, kablosuz bağlantıyı kapatıp mobil ağı kullanmaya başlayabilir.

Uygulamanızda bu senaryoların üstesinden gelmek için, internet erişimine bağlı işlevleri (ör. çevrimdışı içerik sunmak) kontrollü bir şekilde azaltın. Daha fazla bilgi için ağ ağını optimize etmek için en iyi uygulamaları inceleyin.

Alternatif kaynakları kullanma

Uygulamanızı arabalara uyarlamaya yardımcı olması için Android Automotive OS ile çalışan araçlarda çalışırken alternatif kaynaklar sağlamak için car kaynak niteleyiciyi kullanabilirsiniz. Örneğin, dolgu değerlerini depolamak için Boyut kaynakları kullanıyorsanız dokunma hedeflerini genişletmek için car kaynağı grubunda daha büyük bir değer kullanabilirsiniz.

Uygulamanızı dağıtma

Uygulamanızı kategorisinin araba uygulaması kalite yönergelerine göre test ettikten ve kategorisiyle ilgili gerekli değişikliklerle birlikte Android Automotive OS derlemesini yaptıktan sonra, uygulamanızı Play Store'da Automotive OS form faktörü kanallarına yayınlayabilirsiniz. Yayınlama süreci hakkında daha fazla bilgi almak isterseniz Android uygulamalarını arabalar için dağıtma bölümüne bakın.

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ğinizle karşılaşırsanız bunu Google Sorun İzleyici'yi kullanarak bildirebilirsiniz. Sorun şablonunda istenen tüm bilgileri doldurduğunuzdan emin olun. Yeni bir sorun oluşturmadan önce, bu sorunun sorunlar listesinde önceden bildirilip bildirilmediğini kontrol edin. İzleyicideki bir sorun için yıldızı tıklayarak abone olabilir ve sorunlara oy verebilirsiniz. Daha fazla bilgi için Bir soruna abone olma bölümüne bakın.

Yeni sayı oluşturma