Uygulamanızı Android Auto veya Android Automotive OS'in kullanıldığı araçlara taşıyın. Her iki durumda da işe yarayan tek bir uygulama mimarisi kullanarak tüm kullanıcıların uygulamanızdan yararlanmasını sağlayın.
Arabalar için Android nedir?
Arabalar için bir medya uygulaması, kullanıcıların dijital yaşamlarını arabalarıyla sorunsuz bir şekilde bağlamalarına olanak tanıyabilir. Telefonda kullanılabilen uygulamaları otomobillerde de kullanılabilir hâle getirerek daha iyi bir kullanıcı deneyimi sunabilirsiniz. Bu işlemi Android Auto veya Android Automotive OS ile entegrasyon yaparak gerçekleştirebilirsiniz.
Arabalar için Android uygulamaları, her şeyden önce sürücünün dikkatini dağıtmamalıdır. Sesli komutları kullanma ve çok pratik bir görsel tasarım kullanma gibi en iyi uygulamaları izleyerek dikkat dağıtıcı unsurları en aza indirebilirsiniz. Bu sayede medya uygulamanız, sürücüye yalnızca alakalı olduğunda zamanında bilgi gösterebilir ve yaygın görevler için tahmin edilebilir kalıplar kullanabilir.
Android Auto
Android Auto, Android Auto uygulaması ve uyumlu bir araba veya yan sanayi ürünü müzik sistemi olan Android telefon kullanıcılarına sürücü için optimize edilmiş bir uygulama deneyimi sunar. Kullanıcılar, telefonlarını bağlayarak uygulamanızı doğrudan araçlarının ekranında kullanabilir. Android Auto'nun, sürücüye sürücü için optimize edilmiş bir arayüz göstermek üzere kullandığı hizmetler oluşturarak Android Auto'nun telefon uygulamanıza bağlanmasını sağlarsınız.
Android Automotive OS
Android Automotive OS, araçlara yerleştirilmiş Android tabanlı bir bilgi-eğlence sistemidir. Aracın sistemi, sürüş için optimize edilmiş bağımsız bir Android destekli cihazdır. Android Automotive OS ile kullanıcılar uygulamanızı telefonlarına değil, doğrudan arabaya yükler.
Desteklenen uygulama kategorileri
Medya uygulamaları, kullanıcıların arabada müzik, radyo, sesli kitap ve diğer ses içeriklerine göz atıp bunları oynatmasına olanak tanır. Daha fazla bilgi için Arabalar için ses çalma uygulamaları geliştirme ve Arabalar için medya uygulamaları geliştirme sayfalarını inceleyin.
Medya uygulamaları MediaLibraryService ve MediaSession kullanılarak oluşturulur.
Android Automotive OS'te, park halindeyken kullanılmak üzere Görünümler veya Compose'u kullanarak oturum açma ve ayarlar ekranları da oluşturabilirsiniz.
Video uygulamaları, kullanıcıların araba park hâlindeyken yayınlanan videoları izlemesine olanak tanır. Bu uygulamaların temel amacı, yayınlanan videoları göstermektir. Bu uygulamalar, Görünümler veya Compose kullanılarak oluşturulur. Daha fazla bilgi için Android Automotive OS için video oynatma uygulamaları oluşturma ve Android Automotive OS için video uygulamaları oluşturma sayfalarına bakın.
Arabalar için ses oynatma uygulamaları geliştirme
Bu kılavuzda, temel bir medya oynatma uygulamanızın olduğu varsayılmaktadır. Yoksa başlamak için Temel bir medya oynatıcı uygulaması oluşturma başlıklı makaleyi inceleyin.
Bu kılavuzda, yapmanız gerekenler hakkında bilgi verilmekte ve belirli talimatlar içeren ek kaynakların bağlantıları paylaşılmaktadır.
Oynatma bileşenleri
Media3, oynatma kullanım alanları için çeşitli temel bileşenler sunar. Bu bileşenleri oluşturan sınıflar, önceki Android medya kitaplıklarıyla çalıştıysanız size tanıdık gelecektir.
Aşağıdaki şemada, bu bileşenlerin tipik bir uygulamada nasıl bir araya geldiği gösterilmektedir.
Daha fazla bilgi için Oynatma bileşenleri bölümüne bakın.
MediaLibraryService ve MediaLibrarySession uygulayın
MediaLibraryService, medya kitaplığınıza erişim izni vermek ve kitaplığınızı sunmak için standartlaştırılmış bir API sağlar.
Bu, medya uygulamanıza Android Auto veya Android Automotive OS desteği eklerken gereklidir. Çünkü bu platformlar, medya kitaplığınız için sürücü güvenliğine uygun kendi kullanıcı arayüzlerini sağlar. MediaLibraryService uygulama ve kullanımı hakkında daha fazla bilgi için MediaLibraryService ile içerik sunma başlıklı makaleyi inceleyin.
Oynatma kontrolleri için medya oturumu kullanın. MediaSession API, ses veya video oynatıcıyla etkileşim kurmak için evrensel bir yöntem sunar. Jetpack Media3 kitaplığı, MediaLibrarySession içerir. Bu kitaplık, MediaSession'yi genişleterek içeriklere göz atma API'leri ekler.
Bir medya oturumunu oynatıcıya bağlamak, uygulamanın medya oynatmayı harici olarak tanıtmasına ve Android Auto, Android Automotive OS veya Google Asistan gibi harici kaynaklardan oynatma komutları almasına olanak tanır. Daha fazla bilgi için MediaSession kullanarak oynatmayı kontrol etme ve reklam yayınlama ve MediaLibrarySession kullanma başlıklı makaleleri inceleyin.
Medya oturumunuz en azından aşağıdaki oynatıcı komutları için destek beyan etmelidir:
Oynatma kontrollerini etkinleştirme kılavuzunda, arabalarda oynatma kontrollerinizi özelleştirmenin yolları açıklanmaktadır.
Android Auto veya Android Automotive OS uygulamanıza bağlandığında, gösterilecek bir içerik kitaplığı ister. Bu işlem, onGetLibraryRoot() geri çağırma yöntemini tetikler. Kitaplığınıza erişime izin vermek için bir kök medya öğesini hızlıca geri döndürebilirsiniz. onGetChildren()Geri çağırma yöntemi, Android Auto veya Android Automotive OS içerik kitaplığınızın daha derin seviyelerine göz atmaya çalıştığında çağrılır.
Bu platformlar, içerik kitaplığınızın nasıl yapılandırılacağı konusunda ek sınırlar uygular. İçerik kitaplığınızın nasıl görüntüleneceğini özelleştirme hakkında ayrıntılı bilgi için Medya tarayıcı hizmetinizi oluşturma rehberine bakın.
Android Auto desteğini beyan etme
Telefon uygulamanızın Android Auto'yu desteklediğini bildirmek için aşağıdaki manifest girişini kullanın:
<application>
...
<meta-data android:name="com.google.android.gms.car.application"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Bu manifest girişi, uygulamanızın hangi otomotiv özelliklerini desteklediğini bildiren bir XML dosyasını ifade eder. Bir medya uygulamanız olduğunu belirtmek için projenizdeki res/xml/ dizinine automotive_app_desc.xml adlı bir XML dosyası ekleyin. Bu dosya aşağıdaki içerikleri içermelidir:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Android Automotive OS desteğini beyan etme
Uygulamanızdaki mantığın tamamı otomotiv uygulamasıyla paylaşılamadığından bir otomotiv modülü oluşturmanız gerekir. Manifest gibi Android Automotive OS'in bazı bileşenleri platforma özgü şartlara sahiptir. Bu bileşenlerin kodunu projenizdeki diğer kodlardan (ör. mobil uygulamanız için kullanılan kod) ayrı tutabilecek bir modül oluşturun.
Projenize otomotiv modülü eklemek için aşağıdaki adımları uygulayın:
- Android Studio'da File > New > New Module'u (Dosya > Yeni > Yeni Modül) tıklayın.
- Otomotiv Modülü'nü seçin ve Sonraki'yi tıklayın.
- Bir Uygulama/Kitaplık adı girin. Bu, kullanıcıların Android Automotive OS'te uygulamanız için gördüğü addır.
- Bir Modül adı girin.
- Paket adını uygulamanızla eşleşecek şekilde ayarlayın.
Minimum SDK için API 28: Android 9.0 (Pie)'yi seçin ve Sonraki'yi tıklayın.
Android Automotive OS'i destekleyen tüm arabalar Android 9 (API düzeyi 28) veya sonraki sürümlerde çalışır. Bu nedenle, bu değeri seçtiğinizde tüm uyumlu arabalar hedeflenir.
Etkinlik Yok'u seçin ve Son'u tıklayın.
Android Studio'da modülünüzü oluşturduktan sonra yeni otomotiv modülünüzde AndroidManifest.xml dosyasını açın:
<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 öğesinde bazı standart uygulama bilgilerinin yanı sıra Android Automotive OS desteğini bildiren bir uses-feature öğesi bulunur.
Manifest'te herhangi bir etkinlik tanımlanmadığını unutmayın.
Ayarları veya oturum açma etkinliklerini uyguluyorsanız bunları buraya ekleyin. Bu etkinlikler, sistem tarafından açık niyetler kullanılarak tetiklenir ve Android Automotive OS uygulamanızın manifest dosyasında bildirdiğiniz tek etkinliklerdir.
Ayarları veya oturum açma etkinliklerini ekledikten sonra, manifest dosyanızı application öğesinde android:appCategory="audio" özelliğini ayarlayarak ve aşağıdaki uses-feature öğelerini ekleyerek tamamlayın:
<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 özellikleri açıkça required="false" olarak ayarlamak, uygulamanızın Automotive OS cihazlardaki mevcut donanım özellikleriyle çakışmamasını sağlar.
Uygulamanızın Android Automotive OS'i desteklediğini belirtmek için aşağıdaki manifest girişini kullanın:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Bu manifest girişi, uygulamanızın desteklediği otomotiv özelliklerini bildiren bir XML dosyasını ifade eder.
Bir medya uygulamanız olduğunu belirtmek için projenizdeki res/xml/ dizinine automotive_app_desc.xml adlı bir XML dosyası ekleyin. Bu dosyaya aşağıdaki içerikleri ekleyin:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Niyet filtreleri
Android Automotive OS, medya uygulamanızdaki etkinlikleri tetiklemek için açık amaçları kullanır. Manifesto dosyasına CATEGORY_LAUNCHER veya ACTION_MAIN amaç filtrelerine sahip etkinlikler eklemeyin.
Aşağıdaki örnekteki gibi etkinlikler genellikle bir telefonu veya başka bir mobil cihazı hedef alır. Bu işlemleri, Android Automotive OS uygulamanızı oluşturan modülde değil, telefon uygulamasını oluşturan modülde bildirin.
<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>
Sonraki adımlar
Android Auto ve Android Automotive OS için bir uygulamanız olduğuna göre, uygulamanızı araba kullanırken daha güvenli bir şekilde kullanılacak şekilde optimize etmek için ek adımlar atmak isteyebilirsiniz. Güvenli ve rahat bir kullanıcı deneyimi sağlamanıza yardımcı olacak daha fazla öneri için Voice işlemleri, dikkat dağıtıcı unsurlara karşı koruma ve hata işleme ile ilgili teknik kılavuzlara göz atın.
Android Automotive OS için video oynatma uygulamaları oluşturma
Video uygulamaları, arabalardaki medya uygulamalarından ayrı olarak kategorize edildiğinden Arabalar için park halindeyken kullanılabilen uygulamalar geliştirme ve Android Automotive OS için video uygulamaları geliştirme başlıklı makalelerde açıklanan video uygulamalarına yönelik bazı özel şartları göz önünde bulundurmanız gerekir. Aşağıdaki talimatları uygulayın:
Uygulamanızı video uygulaması olarak işaretleme
Uygulamanızın videoyu desteklediğini belirtmek için manifest dosyanızın <application> öğesine android:appCategory="video" özelliğini ekleyin.
<manifest ...>
...
<application
...
android:appCategory="video">
...
</application>
</manifest>
Android Automotive OS donanım özelliğini beyan etme
Uygulamanızın Android Automotive OS cihazlarını desteklediğini beyan etmek için manifest dosyanıza android.hardware.type.automotive <uses-feature> öğesini ekleyin.
android:required özelliğinin "false" veya "true" olarak ayarlanıp ayarlanmayacağıyla ilgili yönergeler için AAOS donanım özelliğini bildirme başlıklı makaleyi inceleyin.
<manifest ...>
...
<uses-feature android:name="android.hardware.type.automotive" ...>
...
</manifest>