我是Android开发者,我正在尝试开发一个自定义Android Auto应用,它可以对手机屏幕进行简单的镜像操作。 我知道目前API仅适用于音乐和消息传递应用程序,但我会为镜像编写一个简单的" hello world"。 我按照Google入门教程进行操作,并使用Google提供的桌面主机(DHU)(在developer.android.com/training/auto/testing/index.html上)
但是当我点击显示屏底部的最后一个按钮并选择"所有汽车应用"时,我的应用程序不会出现在列表中。
例如,如果在三星平板电脑(SM-T555)中启动Android Auto,DHU会列出这些应用:
com.google.android.gms,地图,系统用户界面,视频,SampleAuthenticator服务,SecureSampleAuthService,屏幕截图,Android自动版,手机,媒体,返回Google,三星结算,Google App,Google Play音乐,音乐
Available Car Apps in a Samsung Tablet
如何制作Android Auto中可用应用列表中显示的应用?是否可以在Android Auto中为自定义应用程序进行镜像?
答案 0 :(得分:6)
创建这样的服务:
public class HelloWorldService extends CarActivityService {
@Override
public Class<? extends CarActivity> getCarActivity() {
return HelloWorldAutoActivity.class;
}
}
然后将服务添加到您的清单中,如下所示:
<meta-data
android:name="com.google.android.gms.car.application"
android:resource="@xml/automotive_app_desc" />
<service
android:name=".HelloWorldService"
android:exported="true"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="com.google.android.gms.car.category.CATEGORY_PROJECTION" />
<category android:name="com.google.android.gms.car.category.CATEGORY_PROJECTION_OEM" />
</intent-filter>
</service>
最后在res文件夹下创建一个名为automotive_app_desc的xml文件:
<automotiveApp>
<uses name="service" />
<uses name="projection" />
<uses name="notification" />
</automotiveApp>
您的HelloWorldAutoActivity.class将作为您的MainActivity。
答案 1 :(得分:0)
为了让自动显示应用程序。您必须将其上传到测试版渠道的Playstore。
答案 2 :(得分:-3)
主要活动文件
主要活动代码是Java文件MainActivity.java。这是实际的应用程序文件,最终转换为Dalvik可执行文件并运行您的应用程序。以下是Hello World应用程序向导生成的默认代码!申请 -
package com.example.helloworld;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
清单文件
无论您在应用程序中开发什么组件,都必须在manifest.xml中声明其所有组件,该manifest.xml位于应用程序项目目录的根目录中。此文件用作Android OS与您的应用程序之间的接口,因此如果您未在此文件中声明组件,则操作系统将不会考虑该文件。例如,默认清单文件将如下文所示 -
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tutorialspoint7.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
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>
字符串文件
strings.xml文件位于res / values文件夹中,它包含应用程序使用的所有文本。例如,按钮,标签,默认文本和类似类型的字符串的名称将进入此文件。该文件负责其文本内容。例如,默认字符串文件将如下文所示 -
<resources>
<string name="app_name">HelloWorld</string>
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
</resources>
布局文件
activity_main.xml是res / layout目录中可用的布局文件,在构建其接口时由应用程序引用。您将非常频繁地修改此文件以更改应用程序的布局。为你的“Hello World!”应用程序,此文件将具有以下与默认布局相关的内容 -
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:padding="@dimen/padding_medium"
android:text="@string/hello_world"
tools:context=".MainActivity" />
</RelativeLayout>