android / car-samples Goto Github PK
View Code? Open in Web Editor NEWMultiple samples showing best practices for car app development on both Android Auto and Android Automotive OS.
License: Apache License 2.0
Multiple samples showing best practices for car app development on both Android Auto and Android Automotive OS.
License: Apache License 2.0
Hello there,
thanks for the readme.
The last line of readme:
Follow instructions to update the Template Host app.
leads to
https://developer.android.com/training/cars/apps/automotive-os
which says:
Sorry, we couldn't find that page.
Correct me if I'm wrong, but CURRENT_GEAR should be GEAR_SELECTION here:
Hello
I am getting a security exceptions when I trying to get the value of ODOMETER using VehiclePropertyIds.PERF_ODOMETER, saving that requires android.car.permission.CAR_MILEAGE permission for access, But I add permission in menifest.xml and requesting permission at run time as well
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.carapihelloworld">
<uses-permission android:name="android.car.permission.CAR_SPEED" />
<uses-permission android:name="android.car.permission.CAR_POWERTRAIN" />
<uses-permission android:name="android.car.permission.CAR_MILEAGE" />
<uses-permission android:name="android.car.permission.PERMISSION_READ_DISPLAY_UNITS" />
<uses-permission android:name="android.car.permission.PERMISSION_VENDOR_EXTENSION" />
<uses-permission android:name="android.car.permission.READ_CAR_DISPLAY_UNITS" />
<uses-permission android:name="android.car.permission.PERMISSION_CONTROL_DISPLAY_UNITS" />
<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">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
if (checkSelfPermission("android.car.permission.CAR_MILEAGE") != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{"android.car.permission.CAR_MILEAGE", Car.PERMISSION_CONTROL_DISPLAY_UNITS , Car.PERMISSION_SPEED, Car.PERMISSION_POWERTRAIN, Car.PERMISSION_READ_DISPLAY_UNITS}, REQUEST_CODE_ASK_PERMISSIONS);
} else {
initCarApi();
}
try {
CarPropertyValue carProperty = mCarPropertyManager.getProperty(VehiclePropertyIds.PERF_ODOMETER, DEFAULT_KEYS_SEARCH_GLOBAL);
Log.d(TAG, "MilanMistry: " + carProperty.getValue());
} catch (SecurityException e) {
Log.d(TAG, "MilanMistry: " + e.getMessage());
}
And I check Car.java class from android.car library there in no permission like android.car.permission.CAR_MILEAGE, But in official document suggesting this permission
public static final String APP_FOCUS_SERVICE = "app_focus";
public static final String AUDIO_SERVICE = "audio";
public static final String CAR_CONFIGURATION_SERVICE = "configuration";
public static final String CAR_EXTRA_MEDIA_PACKAGE = "android.car.intent.extra.MEDIA_PACKAGE";
public static final String CAR_INTENT_ACTION_MEDIA_TEMPLATE = "android.car.intent.action.MEDIA_TEMPLATE";
public static final String CAR_NAVIGATION_SERVICE = "car_navigation_service";
public static final String CAR_UX_RESTRICTION_SERVICE = "uxrestriction";
public static final int CONNECTION_TYPE_EMBEDDED = 5;
public static final String INFO_SERVICE = "info";
public static final String PACKAGE_SERVICE = "package";
public static final String PERMISSION_CAR_CONTROL_AUDIO_SETTINGS = "android.car.permission.CAR_CONTROL_AUDIO_SETTINGS";
public static final String PERMISSION_CAR_CONTROL_AUDIO_VOLUME = "android.car.permission.CAR_CONTROL_AUDIO_VOLUME";
public static final String PERMISSION_CAR_INFO = "android.car.permission.CAR_INFO";
public static final String PERMISSION_CAR_NAVIGATION_MANAGER = "android.car.permission.CAR_NAVIGATION_MANAGER";
public static final String PERMISSION_CONTROL_DISPLAY_UNITS = "android.car.permission.CONTROL_CAR_DISPLAY_UNITS";
public static final String PERMISSION_CONTROL_INTERIOR_LIGHTS = "android.car.permission.CONTROL_CAR_INTERIOR_LIGHTS";
public static final String PERMISSION_ENERGY = "android.car.permission.CAR_ENERGY";
public static final String PERMISSION_ENERGY_PORTS = "android.car.permission.CAR_ENERGY_PORTS";
public static final String PERMISSION_EXTERIOR_ENVIRONMENT = "android.car.permission.CAR_EXTERIOR_ENVIRONMENT";
public static final String PERMISSION_IDENTIFICATION = "android.car.permission.CAR_IDENTIFICATION";
public static final String PERMISSION_POWERTRAIN = "android.car.permission.CAR_POWERTRAIN";
public static final String PERMISSION_READ_DISPLAY_UNITS = "android.car.permission.READ_CAR_DISPLAY_UNITS";
public static final String PERMISSION_READ_INTERIOR_LIGHTS = "android.car.permission.READ_CAR_INTERIOR_LIGHTS";
public static final String PERMISSION_READ_STEERING_STATE = "android.car.permission.READ_CAR_STEERING";
public static final String PERMISSION_SPEED = "android.car.permission.CAR_SPEED";
public static final String PROPERTY_SERVICE = "property";
Executing tasks: [:helloworld:automotive:assembleDebug] in project D:\car_app_library
Starting Gradle Daemon...
Gradle Daemon started in 2 s 665 ms
Task :helloworld:automotive:preBuild UP-TO-DATE
Task :helloworld:automotive:preDebugBuild UP-TO-DATE
Task :helloworld:automotive:javaPreCompileDebug UP-TO-DATE
Task :helloworld:automotive:generateDebugResources UP-TO-DATE
Task :helloworld:common:generateDebugResources UP-TO-DATE
Task :helloworld:common:preBuild UP-TO-DATE
Task :helloworld:common:preDebugBuild UP-TO-DATE
Task :helloworld:common:packageDebugResources UP-TO-DATE
Task :helloworld:automotive:mergeDebugResources UP-TO-DATE
Task :helloworld:automotive:createDebugCompatibleScreenManifests UP-TO-DATE
Task :helloworld:automotive:extractDeepLinksDebug UP-TO-DATE
Task :helloworld:common:extractDeepLinksDebug UP-TO-DATE
Task :helloworld:common:processDebugManifest UP-TO-DATE
Task :helloworld:automotive:processDebugManifest FAILED
Task :helloworld:common:compileDebugLibraryResources UP-TO-DATE
Task :helloworld:common:parseDebugLocalResources UP-TO-DATE
Task :helloworld:common:generateDebugRFile UP-TO-DATE
Task :helloworld:common:javaPreCompileDebug UP-TO-DATE
FAILURE: Build completed with 2 failures.
Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module @18c00ce1
Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':helloworld:automotive:processDebugManifest'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:188)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:186)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:174)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module @18c00ce1
at com.google.gson.internal.reflect.UnsafeReflectionAccessor.makeAccessible(UnsafeReflectionAccessor.java:44)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:159)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102)
at com.google.gson.Gson.getAdapter(Gson.java:458)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102)
at com.google.gson.Gson.getAdapter(Gson.java:458)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102)
at com.google.gson.Gson.getAdapter(Gson.java:458)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102)
at com.google.gson.Gson.getAdapter(Gson.java:458)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create(CollectionTypeAdapterFactory.java:53)
at com.google.gson.Gson.getAdapter(Gson.java:458)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102)
at com.google.gson.Gson.getAdapter(Gson.java:458)
at com.google.gson.internal.bind.ArrayTypeAdapter$1.create(ArrayTypeAdapter.java:48)
at com.google.gson.Gson.getAdapter(Gson.java:458)
at com.google.gson.Gson.fromJson(Gson.java:926)
at com.google.gson.Gson.fromJson(Gson.java:892)
at com.google.gson.Gson.fromJson(Gson.java:841)
at com.google.gson.Gson.fromJson(Gson.java:813)
at com.android.manifmerger.ManifestMerger2.createNavigationMap(ManifestMerger2.java:464)
at com.android.manifmerger.ManifestMerger2.merge(ManifestMerger2.java:329)
at com.android.manifmerger.ManifestMerger2.access$600(ManifestMerger2.java:75)
at com.android.manifmerger.ManifestMerger2$Invoker.merge(ManifestMerger2.java:2094)
at com.android.build.gradle.internal.tasks.manifest.ManifestHelperKt.mergeManifestsForApplication(ManifestHelper.kt:86)
at com.android.build.gradle.tasks.ProcessApplicationManifest.doFullTaskAction(ProcessApplicationManifest.java:199)
at com.android.build.gradle.internal.tasks.IncrementalTask.handleIncrementalInputs(IncrementalTask.kt:108)
at com.android.build.gradle.internal.tasks.IncrementalTask.access$handleIncrementalInputs(IncrementalTask.kt:64)
at com.android.build.gradle.internal.tasks.IncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:73)
at com.android.build.gradle.internal.tasks.IncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:34)
at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:91)
at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction$gradle(IncrementalTask.kt:135)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:47)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:506)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:74)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:74)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:491)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:474)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:106)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:271)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:249)
at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:83)
at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:37)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:47)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:37)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:50)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:54)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:35)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:174)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:74)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:45)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:40)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:29)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:99)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:92)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:85)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:42)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:91)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:106)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:51)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:72)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:46)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:86)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:86)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:32)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:43)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:31)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$2.withWorkspace(ExecuteActionsTaskExecuter.java:284)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:185)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:174)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
==============================================================================
Failed to calculate the value of task ':helloworld:common:compileDebugJavaWithJavac' property 'options.generatedSourceOutputDirectory'.
Querying the mapped value of map(java.io.File property(org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, D:\car_app_library\helloworld\common\build\generated\ap_generated_sources\debug\out)) org.gradle.api.internal.file.DefaultFilePropertyFactory$ToFileTransformer@8f43869) before task ':helloworld:common:compileDebugJavaWithJavac' has completed is not supported
Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':helloworld:common:compileDebugJavaWithJavac'.
at org.gradle.api.internal.tasks.properties.DefaultTaskProperties.resolve(DefaultTaskProperties.java:82)
at org.gradle.execution.plan.LocalTaskNode.resolveMutations(LocalTaskNode.java:200)
at org.gradle.execution.plan.DefaultExecutionPlan.getResolvedMutationInfo(DefaultExecutionPlan.java:665)
at org.gradle.execution.plan.DefaultExecutionPlan.selectNext(DefaultExecutionPlan.java:577)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$executeNextNode$1(DefaultPlanExecutor.java:166)
at org.gradle.internal.resources.DefaultResourceLockCoordinationService.withStateLock(DefaultResourceLockCoordinationService.java:45)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:155)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: org.gradle.api.internal.provider.AbstractProperty$PropertyQueryException: Failed to calculate the value of task ':helloworld:common:compileDebugJavaWithJavac' property 'options.generatedSourceOutputDirectory'.
at org.gradle.api.internal.provider.AbstractProperty.finalizeNow(AbstractProperty.java:239)
at org.gradle.api.internal.provider.AbstractProperty.beforeRead(AbstractProperty.java:230)
at org.gradle.api.internal.provider.AbstractProperty.calculateOwnValueNoProducer(AbstractProperty.java:120)
at org.gradle.api.internal.file.DefaultFilePropertyFactory$AbstractFileVar.access$100(DefaultFilePropertyFactory.java:180)
at org.gradle.api.internal.file.DefaultFilePropertyFactory$AbstractFileVar$2.calculateOwnValue(DefaultFilePropertyFactory.java:263)
at org.gradle.api.internal.provider.AbstractMinimalProvider.getOrNull(AbstractMinimalProvider.java:93)
at org.gradle.api.internal.tasks.properties.FileParameterUtils.resolveOutputFilePropertySpecs(FileParameterUtils.java:115)
at org.gradle.api.internal.tasks.properties.OutputUnpacker.visitOutputFileProperty(OutputUnpacker.java:67)
at org.gradle.api.internal.tasks.properties.CompositePropertyVisitor.visitOutputFileProperty(CompositePropertyVisitor.java:64)
at org.gradle.api.internal.tasks.properties.annotations.AbstractOutputPropertyAnnotationHandler.visitPropertyValue(AbstractOutputPropertyAnnotationHandler.java:50)
at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode.visitProperties(AbstractNestedRuntimeBeanNode.java:56)
at org.gradle.api.internal.tasks.properties.bean.NestedRuntimeBeanNode.visitNode(NestedRuntimeBeanNode.java:41)
at org.gradle.api.internal.tasks.properties.DefaultPropertyWalker.visitProperties(DefaultPropertyWalker.java:41)
at org.gradle.api.internal.tasks.TaskPropertyUtils.visitProperties(TaskPropertyUtils.java:44)
at org.gradle.api.internal.tasks.properties.DefaultTaskProperties.resolve(DefaultTaskProperties.java:73)
at org.gradle.execution.plan.LocalTaskNode.resolveMutations(LocalTaskNode.java:200)
at org.gradle.execution.plan.DefaultExecutionPlan.getResolvedMutationInfo(DefaultExecutionPlan.java:665)
at org.gradle.execution.plan.DefaultExecutionPlan.selectNext(DefaultExecutionPlan.java:577)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$executeNextNode$1(DefaultPlanExecutor.java:166)
at org.gradle.internal.resources.DefaultResourceLockCoordinationService.withStateLock(DefaultResourceLockCoordinationService.java:45)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:155)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: org.gradle.api.InvalidUserCodeException: Querying the mapped value of map(java.io.File property(org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, D:\car_app_library\helloworld\common\build\generated\ap_generated_sources\debug\out)) org.gradle.api.internal.file.DefaultFilePropertyFactory$ToFileTransformer@8f43869) before task ':helloworld:common:compileDebugJavaWithJavac' has completed is not supported
at org.gradle.api.internal.provider.TransformBackedProvider.lambda$beforeRead$0(TransformBackedProvider.java:84)
at org.gradle.api.internal.provider.ValueSupplier$TaskProducer.visitContentProducerTasks(ValueSupplier.java:136)
at org.gradle.api.internal.provider.TransformBackedProvider.beforeRead(TransformBackedProvider.java:81)
at org.gradle.api.internal.provider.TransformBackedProvider.calculateOwnValue(TransformBackedProvider.java:63)
at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:103)
at org.gradle.api.internal.provider.MappingProvider.calculateOwnValue(MappingProvider.java:55)
at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:103)
at org.gradle.api.internal.provider.AbstractMinimalProvider.withFinalValue(AbstractMinimalProvider.java:151)
at org.gradle.api.internal.provider.DefaultProperty.finalValue(DefaultProperty.java:133)
at org.gradle.api.internal.provider.DefaultProperty.finalValue(DefaultProperty.java:25)
at org.gradle.api.internal.provider.AbstractProperty.finalizeNow(AbstractProperty.java:236)
... 27 more
==============================================================================
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
See https://docs.gradle.org/7.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 22s
12 actionable tasks: 1 executed, 11 up-to-date
on android studio chipmunk
hello world run on automotive ematulor it have info system requires update info
Hello,
when I try to start the Android Auto places example App I get the error that my App does not have the needed permission but I also haven't found a way to grant those permissions. Can anybody help me?
Here are two Screenshots of the Error I get. The needed permission is Android.permission.ACCESS_FINE_LOCATION:
Thanks in advance if you can help me :)
The new sample apps like Showcase, etc are not showing in the DHU by default.
Even my own app used to work on DHU, but as soon as I migrate it to androidx, it does not show on the DHU anymore.
I am using the same HostValidator as shown in these sample apps. Kindly help
I just create sample project for android automotive OS in which i just display "Hello World" text, but the issue is when i install my apk on emulator (Polestar 2) and increase the speed (from 0 to 3, 4 any number) it shows me this text, "Unavailable, for your safety. This activity is not available while driving." I also create config.xml file in which i make my activity white listed also add meta-data tag in manifest but still got this message. Below is my config.xml and manifest.
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Comma separated list of activities that need to be exempted from getting
blocked in a UX restricted state.
Format of each entry is either to specify package name to allowlist the whole package or
use format of "packagename/activity_classname" for tagging each activities.
For general guidelines to design distraction optimized apps, please refer
to Android Auto Driver Distraction Guidelines. -->
<string name="activityWhitelist" translatable="false">mypackage/mypackage.myapplication.TestActivity</string>
</resources>
--Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mypackage.myapplication">
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
<uses-permission android:name="android.car.permission.CAR_POWERTRAIN" />
<uses-permission android:name="android.car.permission.CAR_SPEED" />
<uses-permission android:name="android.car.permission.CAR_ENERGY" />
<uses-permission android:name="android.car.permission.CAR_UX_RESTRICTIONS_CONFIGURATION" />
<uses-permission android:name="android.car.permission.CAR_DRIVING_STATE"/>
<uses-permission android:name="androidx.car.app.NAVIGATION_TEMPLATES"/>
<uses-permission android:name="androidx.car.app.ACCESS_SURFACE"/>
<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="@android:style/Theme.DeviceDefault.NoActionBar">
<activity android:name=".TestActivity"
android:exported="true"
android:label="e">
<meta-data android:name="distractionOptimized" android:value="true"/>
<intent-filter>
<action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
</intent-filter>
</activity>
</application>
</manifest>
I also tried your sample application, but the behaviour is same.
I'm getting the following errors when trying to run the helloworld example on my mobile and DHU. Has the SessionInfo class been removed. I can run the navigation example.
1.2.0-rc01
Android Studio Dolphin | 2021.3.1
Hi,
I am playing with the automotive library and I managed to run all the examples and created a project with the templates.
I noticed that using the PlaceListMapTemplate displays the map but when i try using the NavigationTemplate the screen is black (other actions and buttons appear) but only the map is not showing.
I tried to do this simple example on Polestar2:
class NavigationMap(carContext: CarContext) : Screen(carContext) {
override fun onGetTemplate(): Template {
val actionStrip = ActionStrip.Builder()
.addAction(
Action.Builder()
.setTitle("BACK")
.setOnClickListener { this.finish() }
.build())
.build()
return NavigationTemplate.Builder()
.setActionStrip(actionStrip)
.setBackgroundColor(CarColor.SECONDARY)
.build()
}
}
Is is something that I am not doing right or missing a KEY for the map or donno? The examples are using a PNG drawn map and is not that obvious what is wrong.
Hello everyone,
I am trying to make android auto navigation app with my existing navigation app.
Tried multiple templates provided by car app library but none of them loading the map. can anyone please help me to add map in app?
how to load map in android auto app? do we need to integrate google map for this? if yes, can anyone please let me know how we can integrate google map?
I would like to implement "Incoming messages" and "Saved messages". Is there a github project that explains the detailed implementation?
I tested the execution of the app based on the "Messaging Service Template" of Android Studio, but nothing was notified to the DHU side.
This repository will be helpful when creating apps using the Cars App Library.
When creating media apps, the uamp repository will be helpful.
However, there is no sample project on github to help me create messaging apps.
my project: https://github.com/LeoAndo/android-auto-automotive-training/tree/main/MessageSimpleApp
Mobile(Google Pixel5 OS12) | DHU v2 |
---|---|
In my opinion, the code in "Android Studio Messaging Service Templates" is old, can't be run right away, and isn't very helpful.(There is no implementation of NotificationChannel etc.)
Issues that cannot be run immediately have been submitted to the issue Tracker.
I'm trying to setup the android auto DHU on Mac.
I've enabled developer mode on my phone and the android auto app, I've enabled usb debugging, and I've enabled adb port forwarding for 5277. I start the head unit server with my phone, then go into the pc, (the first time, this is the spot I used adb) and then start the application. My phone says it's connected to my car, but the pc says that it's waiting for my phone. Any advice? Below he send me a "bye bye" ahahhaha
[W]: No configuration specified - using default values.
[E]: Could not load configuration from '~/.android/headunit.ini'.
BoringSSL is the SSL implementation used in the receiver-lib.
Starting link. Requested protocol version: 1.7
[I]: Connecting over ADB to localhost:5277...
[I]: connected.
> Phone reported protocol version 1.7
ssl state=TLS client read_server_hello -1
ssl state=TLS client process_change_cipher_spec -1
ssl state=SSL negotiation finished successfully 1
SSL version=TLSv1.2 Cipher name=ECDHE-RSA-AES128-GCM-SHA256
Verify returned: ok
[I]: Received ByeBye 1 from phone.
I have built AOSP Automotive with android 12L branch. Then I integrated AOSP Host to system apps, so that Template Apps would be possible to open. My question is how to integrate other Maps(either Google Maps, Openstreetmaps etc) into PlaceListMapTemplate because google maps is not integrated to AOSP version of Automotive OS?
Hi,
I downloaded the HelloWorldSample from the repository and its not getting detected on the Android Auto App under generalised launcher. I changed the Developer settings of Android Auto as well.
Although when I did the given changes in my android manifest file:-
FROM:-
<service android:name=".AndroidAuto.HelloWorldService" android:exported="true">
<intent-filter>
<action android:name="androidx.car.app.CarAppService"/>
<category android:name="androidx.car.app.category.NAVIGATION"/>
</intent-filter>
</service>
TO:-
<service android:name=".AndroidAuto.HelloWorldService" android:exported="true">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>
&
Automative app desc file code for Android auto from:-
<automotiveApp xmlns:tools="http://schemas.android.com/tools">
<uses name="template" />
</automotiveApp>
to
<automotiveApp xmlns:tools="http://schemas.android.com/tools">
<uses name="media" />
</automotiveApp>
it was getting detected and was working fine.
Please guide us on how to get the App detected in Android Auto for Navigation as the same settings are working fine for Media app.
Other details you might find relevant:
Android Studio Version: 4.2.1
Android Auto is running on Device with Android 10
Google services version is: 4.3.8
Desktop head unit version is: 1.1
Build tool version is : 30.0.3
Min Sdk Version: 23
Target sdk version : 30
Thanks in advance.
I see examples of TabTemplate in the design guide (here)
Can someone add some examples of this template to the car-samples project?
I'm facing a build issue for every module:
Execution failed for task ':helloworld:common:compileDebugJavaWithJavac'.
> Failed to calculate the value of task ':helloworld:common:compileDebugJavaWithJavac' property 'options.generatedSourceOutputDirectory'.
> Querying the mapped value of map(java.io.File property(org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, /Users/jacekkwiecien/Projects/car-samples/car_app_library/helloworld/common/build/generated/ap_generated_sources/debug/out)) org.gradle.api.internal.file.DefaultFilePropertyFactory$ToFileTransformer@634f2d8c) before task ':helloworld:common:compileDebugJavaWithJavac' has completed is not supported
I have a JAVA_HOME env var set and pointing to the correct JAVA 8 jdk. Same is set in Android Studio SDK. ALso using jevn, all set to 1.8.
Been previously using JAVA 11, but changing all these didn't help.
Any thoughts why I can only get 4 properties?
CarPropertyConfig{mPropertyId= 287310850 > PARKING_BRAKE_ON
CarPropertyConfig{mPropertyId= 289408000 > GEAR_SELECTION
CarPropertyConfig{mPropertyId= 289408001 > CURRENT_GEAR
CarPropertyConfig{mPropertyId= 289408009 > IGNITION_STATE
When I list all properties, I only see the above 4:
// Create a list of properties in debug window
val carPropertyList = carPropertyManager.propertyList
Log.d(TAG, "carPropertyList: " + carPropertyList.toString())
for (i in 0 until carPropertyList.size) {
val carProperty = carPropertyList[i]
data.add(carProperty.toString())
}
If I try to register any other property, I get an error:
E/CarPropertyManager: registerListener: propId is not in config list: 291504647
Here's the code I try to use:
// Subscribes to the car speed events.
carPropertyManager.registerCallback(
carPropertyCarSpeedListener,
VehiclePropertyIds.PERF_VEHICLE_SPEED,
CarPropertyManager.SENSOR_RATE_ONCHANGE
)
I did add CAR_SPEED permission to my manifest:
<uses-permission android:name="android.car.permission.CAR_SPEED" />
Whenever a username is entered it will also be displayed in the password input field. It can't be removed and it even stays when going back to the username template.
UNABLE to detect navigation app in Android Auto
We are working on a Navigation application and are facing problems in getting navigation app detected in Android Auto
Below you will see:
a) Libraries we used
b) Android Manifest file
c) automative app desc file code for Android auto
d) Different solutions we tried but didn't work
For the same we have followed the given documentation: https://developer.android.com/training/cars/navigation
a) We have used the given libraries (To check the working with both)
implementation “androidx.car.app:app:1.0.0”
implementation "androidx.car.app:app:1.0.0-rc01"
Now the issue we are currently facing is the detection of app in Android Auto (The android auto along with the desktop head unit for testing are both updated to the latest version)
b) Here is how the Android Manifest file looks:-
<!-- <category android:name="androidx.car.app.category.NAVIGATION" /> -->
and the meta data is:-
c) Further the automative app desc file code for Android auto is:-
d) Now I would like to point out couple of things:-
i) Simple changing template to - media/sms/notifcation (Still not detected in android auto)
ii) Further on changing the service's name to Messaging or Media and keeping template as the name in xml file the app is still not detected in android auto
iii) Now the only case the app was detected in android auto was when I switched the category to Media/Messaging in intent filter of service and keeping the automotiveApp tag name as media/sms/notifications.
So the combination in iii) point although detected by android auto doesnt fit
requirement of Navigation App.
In conclusion the setup for Android Manifest and XML file are working fine and are getting detected by android auto in case of Media/Messaging app
refernece taken from: https://developer.android.com/training/cars/messaging
But on the same website content of the given files present in document for Navigation: https://developer.android.com/training/cars/navigation
is not working.
Please guide us on what changes needs to be done in order to fix the same.
In the Helloworld sample testing , gralde did not include the
testImplementation"androidx.car.app:app-testing:1.0.0-alpha01"
https://developer.android.com/reference/kotlin/androidx/car/app/testing/package-summary
or declare any testing define in the hello world build.gradle
also missing robolectric / junit and others
the car testing can't run.
IS there a reason these samples are 1 point revisions behind current? Anyone even maintain this any more?
Issue Description: Google Automotive App Host - This app is not available for any of your devices. This service seems to be a core requirement for running an Android Automotive application, yet isn't available for my Pixel 5. Is there a list of devices somewhere that are supported? Am I missing something?
Replication:
I'm getting compilation error when trying to compile navigation sample app - see
git/car-samples/car_app_library/navigation/src/main/java/androidx/car/app/samples/navigation/car/NavigationSession.java:110: error: <anonymous androidx.car.app.samples.navigation.car.NavigationSession$2> is not abstract and does not override abstract method onProviderDisabled(String) in LocationListener
new LocationListener() {
There is one question.
Templates provided by the Android for Cars App Library currently only support apps for "navigation, parking, charging", but are there any plans to add Templates for "media, messaging" apps?
I hope that templates can be used in "media, messaging" apps like CarPlay.
References:
[Template]
https://developer.android.com/reference/androidx/car/app/model/package-summary.html
[Android for Cars App Library design guidelines]
https://developer.android.com/training/cars/Android%20for%20Cars%20App%20Library%20design%20guidelines.pdf
P28
[CarPlay App Programming Guide]
https://developer.apple.com/carplay/documentation/CarPlay-App-Programming-Guide.pdf
P15
I am having this error message when I try to install it to the emulated device. I have the Android 6.0 and Tiramisu SDK's installed.
It is not specific to any project actually, I gave the example of showcase for the reason of the latest commit updating its CAL version.
Steps to reproduce:
After these steps, I get the following console output
10/25 17:31:49: Launching 'showcase.mobile' on Pixel XL API 33.
Install successfully finished in 529 ms.
Timed out waiting for process (androidx.car.app.sample.showcase) to appear on Pixel_XL_API_33 [emulator-5554].
It is also the same for places.mobile app. For Navigation, the app is installed on the device but nothing happens when I click on the buttons in the app window.
Hello colleagues,
According to Android for Cars App Library design guidelines 1.3-beta @ page 65: PlaceListNavigationTemplate should have a header element.
Please take a look sample code, PlaceListNavigationTemplate @ line 89:
.setHeader(header)
But, it doesn't appear on screen:
Could you please help us solve this issue?
Can someone guide a little on how to inject my custom classes like Repositories and Helper classes into the Android Auto's Screen class
Thanks
I tried both PlaceListMapTemplate and PlaceListNavigationTemplate: when I set OnContentRefreshListener, it doesn't make any effect: refresh button doesn't appear as described in documentation.
Is there any other requirements to make PlaceListMapTemplate show that button?
I'm using the latest Android Auto app 7.8.622514 and DHU 2.0, tried all lib versions including the latest one 1.3.0-alpha01.
For CarGearViewerKotlin it is impossible to access to android.car package.
After adding useLibrary 'android.car'
to build.gradle of app module it started building and running on emulator, but Android Studio still unable to access and/or show them.
import android.car.Car
import android.car.VehiclePropertyIds
import android.car.hardware.CarPropertyValue
import android.car.hardware.property.CarPropertyManager
Android Studio versions:
Chipmunk 2021.2.1 | Patch 1
Electric Eel | 2022.1.1 Canary 2
Android SDK: 29, 30, 31, 32
How can I fix it. Or somehow add android.car.jars. Because it is impossible to normally develop without highlighting and importing packages.
I am integrating Android Auto Car Library for my navigation application. i have implemented navigation template successfully but stuck in integrating third party maps sdk(Like here maps, mapbox etc) as there is only an option for drawing own map rendering with canvas. Any help would highly be appreciated. Thanks.
when I run the showcase.automotive module on my Android Emulator with Android 10.0 (Automotive with Play Store) all it shows is a screen saying that "System requires an update. Please check for updates, or contact the device manufacturer" click update button but all it does is open the play store nothing more (even updating google play services to latest haven't done anything).
and I'm getting this stack trace on my logcat:
2021-06-22 16:58:24.492 7602-7602/androidx.car.app.sample.showcase E/CarApp.Act: Service error: HOST_NOT_FOUND java.lang.Exception: No handlers found for intent: Intent { act=android.car.template.host.RendererService } at androidx.car.app.activity.ServiceConnectionManager.bind(ServiceConnectionManager.java:195) at androidx.car.app.activity.CarAppViewModel.bind(CarAppViewModel.java:103) at androidx.car.app.activity.CarAppActivity.onCreate(CarAppActivity.java:235) at android.app.Activity.performCreate(Activity.java:7825) at android.app.Activity.performCreate(Activity.java:7814) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
I might have missed something, can someone help me with this?
Hey , I have an app that contains DRM protected content and we want to port it to Android Auto.
But i have tried different ways but can't seem to find the way to add my DRM info to play the content?Is there any example or documentation on this?
Thx
Hi all,
I cloned the project and updated the modules for API 33.
Then I selected a module (e.g. helloworld.automotive) and run it on a mobile (Motorola g14 - API 33).
The mobile show me a black window with two messages:
If I press the second message, Google Play shows me the 'Google Automotive App Host' + Your device is not compatible with this version.
If I try to run the helloworld.mobile a message appears: Default Activity not found
Actually the Activity is missing into the AndroidManifest.xml ..
I'd like to run the app on the mobile and see it on the display of the car.
Which version achieve that??
How can I solve the problems, please?
PS: I'm using the Desktop Head Unit emulator
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.