Android Automotive OS est de plus en plus reconnu, car les constructeurs automobiles cherchent à offrir à leurs clients une expérience plus personnalisée. Ici, nous partageons notre guide pour créer la première application pour AAOS.
Avant de commencer, lisez notre premier article sur AAOS et découvrez notre revue pour savoir à quoi vous attendre. Essayons de faire un simple Bonjour le monde application pour android automobile. Pour obtenir un IDE, rendez-vous sur Aperçu d’Android Studio | Développeurs Android et obtenez une version canari :
À l’étape suivante, préparez le SDK, vérifiez et téléchargez l’image du système automobile dans le gestionnaire de SDK. Vous pouvez en obtenir depuis api32, Android 9 ou Android 10, mais je ne recommande pas le plus récent car il est très lent et plante beaucoup en ce moment. Il y a aussi des images Volvo et Polestar.
Pour ceux dont vous avez besoin d’ajouter des liens vers les sites de mise à jour du SDK :
https://developer.volvocars.com/sdk/volvo-sys-img.xml
https://developer.polestar.com/sdk/polestar2-sys-img.xml
Démarrez un nouveau projet, accédez à Fichier> Nouveau projet et choisissez l’automobile avec aucune activité
Un projet agréable et propre doit être créé, sans aucune classe : Aller à build.gradle et ajoutez la bibliothèque d’applications de voiture dans les dépendances, actualisez le projet pour qu’il obtienne
notre nouvelle dépendance :
implementation "androidx.car.app:app-automotive:1.2.0-rc01"
Écrivons du code, d’abord notre classe screen. Nommez-le comme vous le souhaitez et faites-le étendre la classe Screen à partir de android.car.app package et faites-lui implémenter les méthodes requises:
public class GrapeAppScreen extends Screen
public GrapeAppScreen(@NonNull CarContext carContext)
super(carContext);
@NonNull
@Override
public Template onGetTemplate()
Row row = new Row.Builder()
.setTitle("Thats our Grape App!").build();
return new PaneTemplate.Builder(
new Pane.Builder()
.addRow(row)
.build()
).setHeaderAction(Action.APP_ICON).build();
Cela devrait créer un écran simple avec notre icône et notre titre, créez maintenant une autre classe s’étendant CarAppService à partir du même paquet et aussi lui faire implémenter le méthodes requises. De createHostValidator() renvoie une méthode statique qui autorise tous les noms d’hôte dans le cadre de ce didacticiel et renvoie une toute nouvelle session avec notre écran dans onCreateSession()passer CarContext utilisant Session classer getCarContext() méthode:
public class GrapeAppService extends CarAppService
public GrapeAppService()
@NonNull
@Override
public HostValidator createHostValidator()
return HostValidator.ALLOW_ALL_HOSTS_VALIDATOR;
@NonNull
@Override
public Session onCreateSession()
return new Session()
@Override
@NonNull
public Screen onCreateScreen(@Nullable Intent intent)
return new GrapeAppScreen(getCarContext());
;
Ensuite, passez à AndroidManifest et ajoutez diverses fonctionnalités dans la balise principale du manifeste :
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
<uses-feature
android:name="android.software.car.templates_host"
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" />
À l’intérieur de la balise Application, ajoutez notre service et notre activité, n’oubliez pas minCarApiLevel car l’absence de cela lèvera une exception au démarrage de l’application :
<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/Theme.GrapeApplication">
<meta-data android:name="androidx.car.app.minCarApiLevel"
android:value="1"
/>
<service
android:name="com.grapeup.grapeapplication.GrapeAppService"
android:exported="true">
<intent-filter>
<action android:name="androidx.car.app.CarAppService" />
</intent-filter>
</service>
<activity
android:name="androidx.car.app.activity.CarAppActivity"
android:exported="true"
android:label="GrapeApp Starter"
android:launchMode="singleTask"
android:theme="@android:style/Theme.DeviceDefault.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="distractionOptimized"
android:value="true" />
</activity>
</application>
Nous pouvons maintenant télécharger notre application sur l’appareil, vérifier que vous avez créé un émulateur automobile, utiliser la configuration automobile et exécuter. L’application est exécutée dans Google Automotive App Host, donc s’il s’agit de votre première application sur cet appareil, vous devrez peut-être vous rendre sur le Play Store et l’obtenir.
Voilà à quoi ça ressemble:
La dernière chose, nous allons ajouter un bouton de navigation qui fera apparaître un Pain grillé. Modifier onGetTemplate() dans Filtrer classe, ajouter Action et ActionStrip:
Action action = new Action.Builder()
.setOnClickListener(
() -> CarToast.makeText(getCarContext(), "Hello!", CarToast.LENGTH_SHORT).show())
.setTitle("Say hi!")
.build();
ActionStrip actionStrip = new
Ajoutez-le à Modèle de volet :
return new PaneTemplate.Builder(
new Pane.Builder()
.addRow(row)
.build()
) .setActionStrip(actionStrip)
.setHeaderAction(Action.APP_ICON)
.build();
C’est notre application HelloWorld :
Vous avez maintenant l’exemple d’application HelloWorld opérationnel à l’aide de Car App Library. Il s’occupe d’afficher et d’arranger tout sur l’écran pour nous. La seule responsabilité est d’ajouter des écrans et des actions que nous aimerions avoir (et un peu de configuration). Consultez la bibliothèque d’applications Car pour en savoir plus sur ce qui peut être fait avec, jouez avec la création de votre application et consultez bientôt notre blog pour plus de contenu sur la création d’applications AAOS.
More Stories
L’hélicoptère Ingenuity Mars atteint une altitude record lors de son 35e vol
La FTC de Lina Khan se bat avec Microsoft au sujet de l’accord avec Activision Blizzard
Ces images satellites exclusives montrent que la mégapole de science-fiction saoudienne est en bonne voie