Medya uygulamanıza Android Automotive OS desteğini ekleyin

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:

  1. Android Studio'da otomotiv özelliklerini etkinleştirin.
  2. Otomotiv modülü oluşturun.
  3. Gradle bağımlılıklarınızı güncelleyin.
  4. İsteğe bağlı olarak, Ayarları ve oturum açma etkinliklerini uygulayın.
  5. İ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:

  1. Android Studio'da Dosya > Yeni > Yeni Modül.
  2. Otomotiv Modülü'nü seçip İleri'yi tıklayın.
  3. Uygulama/Kitaplık adı girin. Bu, kullanıcıların Android Automotive OS'teki uygulamanız.
  4. Modül adı girin.
  5. Paket adı'nı, uygulamanızla eşleşecek şekilde ayarlayın.
  6. 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.

  7. 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:

my-auto-module/build.gradle

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 ve oturum açma etkinlikleri için iş akışları

Şekil 1. Ayarlar ve oturum açma etkinliği iş akışları.

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 repository
git clone https://github.com/android/uamp.git

# Fetch the appropriate pull request to your local repository
git fetch origin pull/323/head:NEW_LOCAL_BRANCH_NAME

# Switch to the new branch
git checkout NEW_LOCAL_BRANCH_NAME

Etkinliğinizi uygulamak için aşağıdaki adımları izleyin:

  1. automotive/automotive-lib klasörünü otomotiv modülünüze kopyalayın.
  2. Bir tercih ağacını aşağıdaki gibi tanımlayın automotive/src/main/res/xml/preferences.xml
  3. PreferenceFragmentCompat uygulayın görebilirsiniz. SettingsFragment.kt ve UAMP'de ve Android Ayarları'nda SettingsActivity.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 yerine ListPreference 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 ve title ekleyin. Ayrıca transkriptinizi summary, icon veya her ikisini birden ekleyin:
    • Preference
      • onPreferenceTreeClick() geri çağırmasında mantığı özelleştirin PreferenceFragmentCompat uygulanması.
    • CheckBoxPreference
      • Koşullu metin için summary yerine summaryOn veya summaryOff olabilir.
    • SwitchPreference
      • Koşullu metin için summary yerine summaryOn veya summaryOff olabilir.
      • switchTextOn veya switchTextOff içerebilir.
    • SeekBarPreference
      • Bir min, max ve defaultValue ekleyin.
    • EditTextPreference
      • dialogTitle, positiveButtonText ve negativeButtonText dahil edilir.
      • dialogMessage ve/veya dialogLayoutResource 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 gelen entryValues olmalıdır.
    • 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 gelen entryValues olmalıdır.

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:

  1. Hizmetinizin onLoadChildren() yönteminde, null sonucunu sendResult() yöntemidir.
  2. 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.
  3. Medya oturumunun PlaybackStateCompat değerini ayarlayın ERROR_CODE_AUTHENTICATION_EXPIRED olarak ayarlanmış olmalıdır. Android Automotive OS'e, kullanıcının kimlik doğrulaması yapması gerektiğini bildirir.
  4. Medya oturumunun PlaybackStateCompat değerini ayarlayın setErrorMessage() 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.
  5. Medya oturumunun PlaybackStateCompat değerini ayarlayın setExtras() kullanarak ekstra özellikler yöntemidir. Aşağıdaki iki anahtarı ekleyin:

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:

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:

İş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:

  1. Play Console'u açın.
  2. Uygulamanızı seçin.
  3. Sol menüden Sürüm > Kurulum > Gelişmiş ayarlar > Form faktörleri.
  4. 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

Bloglar

Videolar

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 sayı oluştur

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