Android Automotive OS, kullanıcıların arabaya uygulama yüklemesine olanak tanır. Şu kullanıcıya ulaşmak için: bu platformda kullanıyorsanız, hem Android hem de iOS için optimize edilmiş Android Automotive OS ile uyumludur. Neredeyse tüm kodu yeniden kullanabilir ve İYS'nizi kullanabilirsiniz, ancak bu sanal makineyi kullanan bu sayfadaki şartları karşıladığını görebilirsiniz.
Geliştirmeye genel bakış
Android Automotive OS desteği eklemek için açıklandığı gibi yalnızca birkaç adım gerekir aşağıdaki bölümlerde bulabilirsiniz:
- Android Studio'da otomotiv özelliklerini etkinleştirin.
- Otomotiv modülü oluşturun.
- Gradle bağımlılıklarınızı güncelleyin.
- İsteğe bağlı olarak, Ayarları ve oturum açma etkinliklerini uygulayın.
- İsteğe bağlı olarak, Medya ana makinesi ipuçlarını okuyun.
Tasarımla ilgili dikkat edilmesi gereken noktalar
Android Automotive OS, Android Automotive'deki medya içeriğinin uygulamanızın medya tarayıcısı hizmetinden alır. Bu, uygulamanızın kullanıcı arayüzünü çizmediği ve Kullanıcı medya oynatmayı tetiklediğinde etkinliklerinizi görebilirsiniz.
Ayarları veya oturum açma etkinliklerini uyguluyorsanız bu etkinlikler araçlar için optimize edilmiş olmalıdır. Tasarım yönergelerine bakın hem Android Automotive OS için hem de uygulamanızın bu alanlarını tasarlar.
Projenizi oluşturun
Etkinleştirmek için uygulama projesinin bazı bölümlerini ayarlamanız gerekir. Android Automotive OS için destek.
Android Studio'da otomotiv özelliklerini etkinleştirme
Tüm Automotive OS özelliklerinin etkinleştirildiğinden emin olmak için Android Studio 4.0 veya sonraki bir sürümü kullanın etkin.
Otomotiv modülü oluşturun
Android Automotive OS'in bazı bileşenleri (ör. manifest dosyası) platforma özgü koşullar. Projenin gidişatı boyunca projenizdeki diğer kodlardan (örneğin, telefon uygulamanız için kullanılan kod.
Projenize bir otomotiv modülü eklemek için aşağıdaki adımları izleyin:
- Android Studio'da Dosya > Yeni > Yeni Modül.
- Otomotiv Modülü'nü seçip İleri'yi tıklayın.
- Uygulama/Kitaplık adı girin. Bu, kullanıcıların Android Automotive OS'teki uygulamanız.
- Modül adı girin.
- Paket adı'nı, uygulamanızla eşleşecek şekilde ayarlayın.
Minimum SDK olarak API 28: Android 9.0 (Pie) seçeneğini belirleyin ve ardından Sonraki'ye dokunun.
Android Automotive OS'i destekleyen tüm arabalar Android 9 (API düzeyi 28) veya daha yüksek olduğundan bu değer seçildiğinde tüm arabalarla uyumlu olabilir.
Etkinlik Yok'u seçin ve ardından Son'u tıklayın.
Modülünüzü Android Studio'da oluşturduktan sonra AndroidManifest.xml
öğesini şurada açın:
yeni otomotiv modülünüz:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.media">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" />
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
</manifest>
application
öğesi, bazı standart uygulama bilgilerinin yanı sıra
uses-feature
öğesi. Burada
manifest dosyasında bildirilen hiçbir etkinlik değil.
Ayarları veya oturum açma etkinliklerini uygularsanız buradan ulaşabilirsiniz. Bu etkinlikler, açık amaçlar kullanılarak sistem tarafından tetiklenir ve aşağıdaki işlemler sizin için manifest dosyasında beyan ettiğiniz Android Automotive OS uygulaması.
Herhangi bir ayar veya oturum açma etkinliği ekledikten sonra manifest dosyanızı şu şekilde tamamlayın:
application
öğesinde android:appCategory="audio"
özelliğini ayarlayarak
şu uses-feature
öğelerini ekleyerek:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.media"> <application android:allowBackup="true" android:appCategory="audio" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" /> <uses-feature android:name="android.hardware.type.automotive" android:required="true" /> <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" /> </manifest>
Bu özelliklerin açıkça required="false"
değerine ayarlanması,
Uygulamanız Automotive OS'teki mevcut donanım özellikleriyle çakışmıyor
cihazlar.
Android Automotive OS için medya desteği bildirme
Uygulamanızın desteklediğini beyan etmek için aşağıdaki manifest girişini kullanın: Android Automotive OS:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Bu manifest girişi, otomotiv özellikleri de vurgular.
Bir medya uygulamanız olduğunu belirtmek için
automotive_app_desc.xml
adlı XML dosyasını res/xml/
belirler. Bu dosyaya aşağıdaki içeriği ekleyin:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Intent filtreleri
Android Automotive OS, medyanızdaki etkinlikleri tetiklemek için açık amaçlar kullanır
uygulamasını indirin. Belgenizi oluştururken
CATEGORY_LAUNCHER
veya ACTION_MAIN
niyeti
filtresi ekleyin.
Aşağıdaki örnekte bulunan gibi etkinlikler genellikle bir telefonu veya bazı mobil cihazdan erişebilirsiniz. Modülde bu aktiviteleri telefon uygulamasını derler, Android Automotive OS'inizi oluşturan modül değil uygulamasını indirin.
<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>
Gradle bağımlılıklarınızı güncelleme
Medya tarayıcı hizmetinizi kullanmaya devam etmenizi öneririz telefon uygulamanız ve otomobiliniz arasında paylaştığınız ayrı bir modülde modülünü kullanabilirsiniz. Bu yaklaşımı kullanıyorsanız otomobilinizi güncellemeniz gerekir. modülünü aşağıdaki snippet'te gösterildiği gibi, paylaşılan modülü dahil edecek şekilde değiştirin:
Eski
buildscript { ... dependencies { ... implementation project(':shared_module_name') } }
Kotlin
buildscript { ... dependencies { ... implementation(project(":shared_module_name")) } }
Ayarları ve oturum açma etkinliklerini uygulayın
Medya tarayıcısı hizmetinize ek olarak, araç için optimize edilmiş de Android Automotive OS uygulamanız için ayarları ve oturum açma etkinliklerini görebilirsiniz. Bu etkinlikler, şu kapsama dahil olmayan uygulama işlevselliği sağlamanıza olanak tanır: Android Media API'leri.
Bu etkinlikleri yalnızca Android Automotive OS uygulamanız kullanıcının oturum açmasına veya uygulama ayarlarını belirtmesine izin vermesi gerekir. Bu etkinlikler Android Auto tarafından kullanılır.
Etkinlik iş akışları
Aşağıdaki şemada, bir kullanıcının ayarlarınızla nasıl etkileşimde bulunduğu ve Android Automotive OS'i kullanarak oturum açma etkinlikleri:
Ayarlarınızda ve oturum açma etkinliklerinizdeki dikkat dağıtıcı unsurları önleyin
Ayarlarınızın ve/veya oturum açma etkinliklerinizin yalnızca kullanılabilir olduğundan emin olmak için
Kullanıcının aracı park hâlindeyken <activity>
öğesinin
aşağıdaki <meta-data>
öğesini dahil etmeyin. Uygulamanız reddedilecek
öğe olup olmadığını inceleyebilir.
<!-- NOT ALLOWED -->
<meta-data
android:name="distractionOptimized"
android:value="true"/>
Ayarlar etkinliği ekle
Araç için optimize edilmiş ayarlar etkinliği ekleyebilirsiniz. kullanıcıların, arabalarında uygulamanızın ayarlarını yapılandırabilmesini sağlar. Ayarlarınız etkinliği, kullanıcının hesabında oturum açma veya oturumdan çıkma gibi veya kullanıcı hesaplarının değiştirilmesi. Bu etkinliğin yalnızca Android Automotive OS'te çalışan bir uygulama tarafından tetiklenir. Şu cihaza bağlı telefon uygulamaları: Android Auto kullanılmaz.
Ayarlarla ilgili etkinlik bildirme
Ayar etkinliğinizi aşağıdaki gibi uygulamanızın manifest dosyasında beyan etmeniz gerekir: şu kod snippet'ini kullanabilirsiniz:
<application>
...
<activity android:name=".AppSettingsActivity"
android:exported="true"
android:theme="@style/SettingsActivity"
android:label="@string/app_settings_activity_title">
<intent-filter>
<action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
</intent-filter>
</activity>
...
</application>
Ayarlar etkinliğinizi uygulama
Android Automotive OS, kullanıcı uygulamanızı başlattığında
ve bir simge gibi uygun fiyatlar gösterir.
Kullanıcı gitmek üzere arabasının ekranını kullanarak bu uygun fiyatlı seçeneğe dokunabilir veya seçebilir
bir referans noktası
görevi görebilir. Android Automotive OS, ACTION_APPLICATION_PREFERENCES
bilgisini gönderir
uygulamanıza ayar etkinliğinizi başlatmasını söyleyen bir intent içerir.
Bu bölümün geri kalanında, Evrensel API'dan kodu nasıl uyarlayacağınız Android Music Player (UAMP) örnek uygulaması bir ayar etkinliği uygulayın.
Başlamak için örnek kodu indirin:
# Clone the UAMP repositorygit clone https://github.com/android/uamp.git
# Fetch the appropriate pull request to your local repositorygit fetch origin pull/323/head:NEW_LOCAL_BRANCH_NAME
# Switch to the new branchgit checkout NEW_LOCAL_BRANCH_NAME
Etkinliğinizi uygulamak için aşağıdaki adımları izleyin:
automotive/automotive-lib
klasörünü otomotiv modülünüze kopyalayın.- Bir tercih ağacını aşağıdaki gibi tanımlayın
automotive/src/main/res/xml/preferences.xml
PreferenceFragmentCompat
uygulayın görebilirsiniz.SettingsFragment.kt
ve UAMP'de ve Android Ayarları'ndaSettingsActivity.kt
dosya rehberini inceleyin.
Ayarlar etkinliklerinizi uygularken Tercih kitaplığındaki bileşenlerden bazıları şunlardır:
- Ana görünümün altında ikiden fazla derinlik düzeyi olmamalıdır ayarlar etkinliğiniz.
DropDownPreference
kullanmayın. Bunun yerineListPreference
kullanın.- Kuruluş bileşenleri:
PreferenceScreen
- Bu, tercihler ağacınızın en üst düzeyi olmalıdır.
PreferenceCategory
Preference
nesneyi birlikte gruplandırmak için kullanılır.title
ekleyin.
- Aşağıdaki tüm bileşenlere bir
key
vetitle
ekleyin. Ayrıca transkriptinizisummary
,icon
veya her ikisini birden ekleyin:Preference
onPreferenceTreeClick()
geri çağırmasında mantığı özelleştirinPreferenceFragmentCompat
uygulanması.
CheckBoxPreference
- Koşullu metin için
summary
yerinesummaryOn
veyasummaryOff
olabilir.
- Koşullu metin için
SwitchPreference
- Koşullu metin için
summary
yerinesummaryOn
veyasummaryOff
olabilir. switchTextOn
veyaswitchTextOff
içerebilir.
- Koşullu metin için
SeekBarPreference
- Bir
min
,max
vedefaultValue
ekleyin.
- Bir
EditTextPreference
dialogTitle
,positiveButtonText
venegativeButtonText
dahil edilir.dialogMessage
ve/veyadialogLayoutResource
içerebilir.
com.example.android.uamp.automotive.lib.ListPreference
- Çoğunlukla
ListPreference
kaynağından türetiliyor. Preference
nesne içeren tek seçimli bir listeyi görüntülemek için kullanılır.entries
dizisi ve karşılık gelenentryValues
olmalıdır.
- Çoğunlukla
com.example.android.uamp.automotive.lib.MultiSelectListPreference
- Çoğunlukla
MultiSelectListPreference
kaynağından türetiliyor Preference
nesneden oluşan çoktan seçmeli bir listeyi görüntülemek için kullanılır.entries
dizisi ve karşılık gelenentryValues
olmalıdır.
- Çoğunlukla
Oturum açma etkinliği ekleme
Uygulamanızda kullanıcıların uygulamanızı kullanabilmesi için oturum açması gerekiyorsa araç için optimize edilmiş oturum açma etkinliği ve oturum kapatma işlemlerini nasıl yapacağınızla ilgili daha fazla bilgi edinin. Ayrıca, oturum açma ve çıkış yapma özelliklerini de ekleyebilirsiniz ayar etkinliğine dönüştürmenize gerek yoktur, ancak uygulamanız, bir kullanıcı hesabı bulunana kadar kullanılamıyorsa oturum açar. Bu etkinliğin yalnızca şurada çalışan bir uygulama tarafından tetiklendiğini unutmayın: Android Automotive OS. Android Auto'ya bağlı telefon uygulamaları bunu kullanmaz.
Uygulama başlangıcında oturum açmayı zorunlu kıl
Kullanıcıların uygulamanızı kullanabilmesi için oturum açmasını zorunlu kılmak istiyorsanız medya tarayıcınız hizmetinin şunları yapması gerekir:
- Hizmetinizin
onLoadChildren()
yönteminde,null
sonucunusendResult()
yöntemidir. - Medya oturumunun
PlaybackStateCompat
değerini ayarlayın Hedef:STATE_ERROR
setState()
yöntemidir. Bu, Android Automotive OS'e şu tarihe kadar başka işlem yapılamayacağını bildirir: hata çözülmüştür. - Medya oturumunun
PlaybackStateCompat
değerini ayarlayınERROR_CODE_AUTHENTICATION_EXPIRED
olarak ayarlanmış olmalıdır. Android Automotive OS'e, kullanıcının kimlik doğrulaması yapması gerektiğini bildirir. - Medya oturumunun
PlaybackStateCompat
değerini ayarlayınsetErrorMessage()
kullanılırken karşılaşılan hata mesajı yöntemidir. Bu hata mesajı kullanıcılara yönelik olduğundan yerelleştirin kullanıcının mevcut yerel ayarıdır. Medya oturumunun
PlaybackStateCompat
değerini ayarlayınsetExtras()
kullanarak ekstra özellikler yöntemidir. Aşağıdaki iki anahtarı ekleyin:PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL
: oturum açma iş akışını başlatan düğmede görüntülenen bir dizedir. Bu dize kullanıcılara yönelik olduğundan, dizeyi kullanıcının Mevcut yerel ayar.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT
: web sitesini yönlendiren birPendingIntent
kullanıcı,PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL
.
Aşağıdaki kod snippet'i, uygulamanızın kullanıcının oturum açmasını nasıl gerektirebileceğini gösterir uygulamanızı kullanmadan önce:
Kotlin
import androidx.media.utils.MediaConstants val signInIntent = Intent(this, SignInActivity::class.java) val signInActivityPendingIntent = PendingIntent.getActivity(this, 0, signInIntent, 0) val extras = Bundle().apply { putString( MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL, "Sign in" ) putParcelable( MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT, signInActivityPendingIntent ) } val playbackState = PlaybackStateCompat.Builder() .setState(PlaybackStateCompat.STATE_ERROR, 0, 0f) .setErrorMessage( PlaybackStateCompat.ERROR_CODE_AUTHENTICATION_EXPIRED, "Authentication required" ) .setExtras(extras) .build() mediaSession.setPlaybackState(playbackState)
Java
import androidx.media.utils.MediaConstants; Intent signInIntent = new Intent(this, SignInActivity.class); PendingIntent signInActivityPendingIntent = PendingIntent.getActivity(this, 0, signInIntent, 0); Bundle extras = new Bundle(); extras.putString( MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL, "Sign in"); extras.putParcelable( MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT, signInActivityPendingIntent); PlaybackStateCompat playbackState = new PlaybackStateCompat.Builder() .setState(PlaybackStateCompat.STATE_ERROR, 0, 0f) .setErrorMessage( PlaybackStateCompat.ERROR_CODE_AUTHENTICATION_EXPIRED, "Authentication required" ) .setExtras(extras) .build(); mediaSession.setPlaybackState(playbackState);
Kullanıcının kimliği başarıyla doğrulandıktan sonra PlaybackStateCompat
STATE_ERROR
dışındaki bir duruma geri döndüğünde,
Ardından, etkinliğin
finish()
yöntemidir.
Oturum açma etkinliğinizi uygulayın
Google, çeşitli kimlik araçları sunar kullanıcıların arabalarında uygulamanızda oturum açmalarına yardımcı olmak için kullanabilirsiniz. Biraz araçları, tam kapsamlı araç setleri sağlar. Bu araçlar, özelleştirilmiş kimlik doğrulama deneyimleri oluşturmanıza yardımcı olur. Diğer araçlar ve diğer teknolojileri kullanarak kullanıcının mevcut kimlik bilgilerini veya diğer teknolojileri kullanıcılara oturum açma deneyimleri sunmak.
Aşağıdaki araçlar, daha kolay bir oturum açma deneyimi oluşturmanıza yardımcı olabilir deneyim:
- One Tap ile Oturum Açma ve Kaydolma: One Tap'ı daha önce uyguladıysanız telefon uygulamanız gibi diğer cihazlarda, Android Automotive OS uygulaması, mevcut One Tap kullanıcılarını destekleyecek.
- Google ile Oturum Açma: Google ile Oturum Açma'yı zaten uyguladıysanız telefon uygulamanız gibi diğer cihazlarda Google Mevcut Google ile Oturum Açma özelliğini desteklemek için Android Automotive OS uygulamanızda oturum açın yardımcı olur.
- Google ile otomatik doldurma: Kullanıcılar Google ile otomatik doldurma özelliğini bu kullanıcıların kimlik bilgileri Google şifre yöneticisine kaydedilir. Bu kullanıcılar Android Automotive OS uygulamanızda oturum açtığında şununla otomatik doldur: Google, ilgili kayıtlı kimlik bilgileri önerir. Google ile otomatik doldurma özelliğini kullanmak için hiçbir çaba sarf etmiyor. Ancak, uygulama geliştiriciler uygulamalarını daha kaliteli sonuçlar elde edecek şekilde optimize edebilir. Google ile otomatik doldurma özelliği, Android 8.0 çalıştıran tüm cihazlarda desteklenir (API düzeyi 26) veya sonraki sürümler (Android Automotive OS dahil).
Hesap Yöneticisi'ni kullanma
Kimlik doğrulaması olan Android Automotive OS uygulamaları şunu kullanmalıdır: AccountManager:
- Daha iyi bir kullanıcı deneyimi ve hesap yönetimi kolaylığı: Kullanıcılar tüm oturum açma da dahil olmak üzere sistem ayarlarındaki hesaplar menüsünden ve oturumu kapatın.
- "Misafir" deneyimler: arabalar paylaşılan cihazlardır, yani OEM'ler
"misafir" hesap eklemenin mümkün olmadığı durumlarda. Bu
kısıtlama
DISALLOW_MODIFY_ACCOUNTS
kullanılarak gerçekleştirildiğinde (AccountManager
için).
İzinler
Kullanıcıdan izin istemeniz gerekiyorsa kimlik doğrulama etkinliği veya etkinlik iş akışlarındaki ayar etkinliği şema ile ilgili daha fazla bilgi edinebilirsiniz.
Medya ana makinesi ipuçlarını okuma
uygulamanız aşağıdaki ekstraları alabilir:
MediaBrowserServiceCompat#onLoadChildren
adlı grupta veMediaBrowserServiceCompat#onSearch
içinde:
Hata İşleme
Android Automotive OS'teki medya uygulamalarındaki hatalar medya aracılığıyla iletilir
PlaybackStateCompat
. Tüm hatalar için uygun bir hata ayarlayın
PlaybackStateCompat
içindeki kodu ve hata mesajını görebilirsiniz. Bu, bir Toast
gösterilmesine neden olur.
görüntülenir.
Bir hata oluştuğunda ancak oynatma devam edebiliyorsa önemli olmayan hata. Örneğin, bir kullanıcı oturum açmadan önce bir uygulamada müzik çalabilir, ancak Şarkıyı atlamadan önce oturum açmaları gerekir. Önemli olmayan bir hata kullandığınızda sistem, kullanıcının oynatma işlemi kesintiye uğramadan giriş yapmasını ve Geçerli medya öğesine dokunun.
Önemli olmayan bir hata yayınladığınızda
PlaybackStateCompat
seçeneğini de aynı sırada kullanın. Bunu kullanma
yaklaşım, kullanıcı devam ederken mevcut medya öğesinin oynatılmaya
oturum açıp açmayacağına karar verir.
Oynatmanın mümkün olmadığı durumlarda (ör. internet bağlantısı olmadığında ve
çevrimdışı içerik yok, PlaybackStateCompat
durumunu STATE_ERROR
olarak ayarlayın.
PlaybackStateCompat
ile ilgili sonraki güncellemelerde tüm hata kodlarını temizleyin
ve hata mesajları göstererek aynı hata için birden fazla uyarı görüntülemenizi önler.
Herhangi bir noktada göz atma ağacı yükleyemezseniz (örneğin,
kimlik doğrulama gerektirir ve kullanıcı oturum açmamıştır; boş bir veri gönder
göz atmayı da tercih edebilirsiniz. Bunu belirtmek için onLoadChildren()
öğesinden null sonuç döndür
kök medya düğümünü açın. Bu durumda sistem ekranda tam ekran
PlaybackStateCompat
içinde ayarlanan hata mesajıyla ilgili bir hata oluştu.
İşlem yapılabilir hatalar
Bir hatayla ilgili işlem yapılabilirse, ayrıca
PlaybackStateCompat
:
PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_LABEL
: hatayı gidermek üzere tıklanacak düğme için bir etiket ekleyin. Çünkü bu dize yönelik olarak, kullanıcının mevcut yerel ayarına göre yerelleştirin.PLAYBACK_STATE_EXTRAS_KEY_ERROR_RESOLUTION_ACTION_INTENT
: hatayı çözmek için düğmenin çalıştırıldığıPendingIntent
oturum açma etkinliğinizi başlatabilirsiniz.
İşlem yapılabilir hatalar Dialog
olarak görünür ve kullanıcılar tarafından yalnızca aşağıdaki durumlarda çözülebilir
araba durdu.
Hata durumlarını test etme
Uygulamanızın, aşağıdakiler dahil olmak üzere her durumda hataları sorunsuz bir şekilde ele aldığından emin olun:
- Ürününüzün farklı katmanları: Örneğin, ücretsiz veya premium ya da oturum açıkken - oturum kapalı
- Farklı sürüş durumları: Örneğin, park edilmiş ve sürüş
- Farklı bağlantı durumları: Örneğin, online veya çevrimdışı
Dikkat edilmesi gereken diğer noktalar
Android Automotive'inizi geliştirirken bu diğer noktaları aklınızda bulundurun İşletim sistemi uygulaması:
Çevrimdışı içerik
Geçerliyse çevrimdışı oynatma desteğini uygulayın. Android Automotive'e sahip arabalar İşletim sisteminin kendi veri bağlantısına sahip olması beklenir. Bu da Veri planı, aracın maliyetine dahil edilmiş veya ücreti kullanıcı tarafından ödenmiş olmalıdır. Bununla birlikte, arabaların mobil cihazlara göre daha değişken bağlantıya sahip olması da bekleniyor. cihazlar.
Çevrimdışı desteğinizi değerlendirirken aklınızda bulundurmanız gereken birkaç nokta: strateji:
- İçerik indirmek için en iyi zaman, uygulamanızın kullanım sırasındadır.
- Kablosuz bağlantının bulunduğunu varsaymayın. Bir araba hiç kablosuz kapsama alanına girmeyebilir, veya OEM, kablosuz bağlantıyı devre dışı bırakarak hücresel ağ kullanmaya karar vermiş olabilir.
- Kullanıcıların kullanmasını beklediğiniz içeriği akıllı olarak önbelleğe almak doğru olsa da kullanıcının bu davranışı ayarlar etkinliğiniz.
- Arabalardaki disk alanı değişiklik gösterir, bu nedenle kullanıcılara silecekleri için bir yol sunun çevrimdışı içerik (örneğin, Ayarlar Etkinliği.
WebView desteği
Web Görünümleri, Android Automotive OS'te desteklenir ancak yalnızca aşağıdakiler için izin verilir ayarlarınızı ve oturum açma etkinliklerinizden haberdar olun. WebView kullanan etkinlikler, "close" (kapat) veya "geri" özelliklerini sunar.
Aşağıda, Web Görünümleri için kabul edilebilir kullanım alanlarına bazı örnekler verilmiştir:
- Gizlilik politikanızı, hizmet şartlarınızı veya yasal konularla ilgili diğer bağlantıları görüntüleme Ayarlar Etkinliği'nde bulabilirsiniz.
- Oturum açma etkinliğinizde web tabanlı bir akış.
Web Görünümü kullanırken JavaScript.
Web Görünümünüzün güvenliğini sağlayın
Web Görünümünüzün geçerli bir özellik olmadığından emin olmak için mümkün olan tüm
bir giriş noktası haline gelir. Aşağıdaki kod snippet'inde bir
Web Görünümü'nü
loadUrl()
çağırmak ve yönlendirmeleri engellemektir. Dikkatinizi korumak için mutlaka
mümkün olduğunda bu şekildedir. Örneğin,
izin vermez.
Kotlin
override fun shouldOverrideUrlLoading(webView: WebView, webResourceRequest: WebResourceRequest): Boolean { val originalUri: Uri = Uri.parse(webView.originalUrl) // Check for allowed URLs if (originalUri.equals(Uri.parse(BLANK_URL)) || originalUri.equals(webResourceRequest.url)) { return false } if (webResourceRequest.isRedirect) { logger.w("Redirect detected, not following") return true } setupWizardWebViewClientListener.onUriBlocked(webResourceRequest.url) logger.w( String.format( "Navigation prevented to %s original is %s", webResourceRequest.url, originalUri)) return true }
Java
@Override public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest webResourceRequest) { Uri originalUri = Uri.parse(webView.getOriginalUrl()); // Check for allowed URLs if (originalUri.equals(Uri.parse(BLANK_URL)) || originalUri.equals(webResourceRequest.getUrl())) { return false; } if (webResourceRequest.isRedirect()) { logger.w("Redirect detected, not following"); return true; } setupWizardWebViewClientListener.onUriBlocked(webResourceRequest.getUrl()); logger.w( String.format( "Navigation prevented to %s original is %s", webResourceRequest.getUrl(), originalUri)); return true; }
Paket adları
Android Automotive OS için ayrı bir Android Package Kit (APK) dağıttığınızdan şunları yapabilirsiniz: mobil uygulamanızdaki paket adını yeniden kullanın veya yeni bir paket oluşturun dokunun. Farklı bir paket adı kullanırsanız uygulamanız iki ayrı Play Store'a sahip olur inceleyebilirsiniz. Mevcut paket adınızı yeniden kullanırsanız uygulamanızın her iki platformda da tek bir liste oluşturabilirsiniz.
Bu, genel olarak işle ilgili bir karardır. Örneğin üzerinde çalışan bir ekibiniz varsa mobil uygulamanız ve Android Automotive'iniz üzerinde çalışan ayrı bir ekip işletim sistemi uygulaması kullanıyorsanız ayrı paket adlarına sahip olmak ve her birinin ekibinin kendi Play mağaza girişini yönetmesine izin veriyoruz. Önceki videoda çok büyük bir teknik çabayı göstermeniz gerekir.
Aşağıdaki tabloda, kalite verilerinizi korumak yeni bir paket adı kullanarak:
Özellik | Aynı paket adı | Yeni paket adı |
---|---|---|
Mağaza girişi | Tek | Birden çok |
Yansıtılmış yükleme | Evet: Kurulum sihirbazı sırasında "uygulamayı hızlı yeniden yükleme" | Hayır |
Play Store inceleme süreci | Yorumları engelleme: İnceleme bir APK için başarısız olursa diğer APK'lar aynı sürümde gönderilenler engellendi | Bireysel yorumlar |
İstatistikler, metrikler ve kritik değerler | Birleşik: Otomotiv sektörüne özel verileri filtreleyebilirsiniz. | Ayır |
Dizine ekleme ve arama sıralaması | Mevcut durumu geliştirme | Devretme yok |
Diğer uygulamalarla entegrasyon | Medya kodunun iki APK arasında paylaşıldığı varsayıldığında, büyük olasılıkla herhangi bir değişiklik gerekmez | İlgili uygulamayı güncellemeniz gerekebilir (örneğin, Google Asistan'la URI oynatma için). |
Sık sorulan sorular
Hakkında sık sorulan bazı soruların yanıtları için aşağıdaki bölümlere bakın Android Automotive OS.
Donanım
Uygulamam mikrofona erişebilir mi
Android 10 (API düzeyi 29) veya sonraki sürümleri hedefleyen uygulamalar için paylaşım ses girişi dokümanlarını inceleyin. Bu değil API düzeyi 29'dan önce uygulanabilir.
Hangi araba API'lerine ve nasıl erişebiliriz?
Yalnızca OEM tarafından kullanıma sunulan API'ler kullanılabilir. Süreçler bu API'lere erişme şeklinizi standartlaştırmak için geliştirilmiştir.
Uygulamalar, SetProperty()
kullanarak araba API'lerine erişebilir
ve GetProperty()
CarPropertyManager
içinde.
Kaynak koda bakın
veya referans belgelere göz atın.
listesi oluşturun. Tesise ek açıklama eklenmişse
@SystemApi
sürümünde ise önceden yüklenmiş sistem uygulamalarıyla sınırlıdır.
Ne tür ses codec'leri desteklenir?
Ses codec'i ayrıntılarına bakın yazın.
Widevine DRM destekleniyor mu?
Evet. Widevine DRM desteklenir.
Geliştirme ve test
Üçüncü taraf SDK'larının ve kitaplıklarının kullanımıyla ilgili herhangi bir kısıtlama veya öneri var mı?
Üçüncü taraf SDK'larının ve kitaplıklarının kullanımıyla ilgili belirli bir kuralımız yoktur. Üçüncü taraf SDK'ları ve kitaplıklarını kullanmayı tercih etseniz bile sorumluluk size aittir tüm araba uygulaması kalite şartlarına uymaya yardımcı olur.
Ön plan hizmeti kullanabilir miyim?
Bir ön plan hizmetinin izin verilen tek kullanım alanı şunun için içerik indirmektir: çevrimdışı kullanım. Bir ön plan hizmeti için istediğiniz başka bir kullanım alanınız varsa aşağıdaki konularda destek almak için Android Automotive OS üzerinden bizimle iletişime geçin tartışma grubu'na tabidir.
Android Automotive OS uygulamaları yayınlama
Android Automotive OS uygulamamı Google Play Console'u kullanarak nasıl yayınlarım?
Uygulama yayınlama süreci bir telefon uygulaması yayınlamaya benzer, ancak farklı bir biçim faktörü. Uygulamanızda Android Automotive'i etkinleştirmek için OS form faktörü için aşağıdaki adımları uygulayın:
- Play Console'u açın.
- Uygulamanızı seçin.
- Sol menüden Sürüm > Kurulum > Gelişmiş ayarlar > Form faktörleri.
- Form faktörü ekle > Android Automotive OS'e göz atın, ardından talimatları uygulayın.
Ek kaynaklar
Android Automotive OS hakkında daha fazla bilgi edinmek için aşağıdaki ek bilgilere göz atın kaynaklar.
Örnekler
Kılavuzlar
- Sürüş İçin Tasarlama
- Medya denetleyicisi test uygulamasını kullanma
- Android Automotive OS'te bildirimler
- Arabalar için Android uygulama kalitesi
Bloglar
- Geliştiriciler için Android Automotive OS güncellemeleri
- Android Automotive OS için Uygulama Geliştirme
Videolar
- Arabalar İçin Medya Uygulamaları Oluşturma (Android Dev Summit '19)
- Arabalar için Android Uygulamaları Nasıl Geliştirilir? (Google I/O'19)
Android Automotive OS Media sorunu bildirme
Android Automotive için medya uygulamanızı geliştirirken sorunla karşılaşırsanız Bu durumu, sorunları çözmek için Google Sorun Takip Aracı. Sorun şablonuna istenen tüm bilgileri girdiğinizden emin olun.
Yeni bir sorun oluşturmadan önce, bu sorunun sorunlarda zaten bildirilip bildirilmediğini kontrol edin liste'ye dokunun. Şu sayılarda bir sayı için yıldızı tıklayarak abone olabilir ve sayılara oy verebilirsiniz: takip edebilirsiniz. Daha fazla bilgi için bkz. Bir Soruna abone olma