Google glass 卡片不显示;直接回家卡

Google glass 卡片不显示;直接回家卡,google-glass,google-gdk,Google Glass,Google Gdk,我试着展示一张卡片,所以我知道在这一点上一切都是有效的。然而,当我试图显示卡时,它直接进入主卡。我想展示的卡片只是要显示之前在语音识别器中所说的内容,但这不起作用,所以我只放了纯文本,这也不起作用。应用程序启动-语音触发-->语音识别器-->此服务: public class MedMinderService extends Service { public String MedName; public String voiceResults; private static final Stri

我试着展示一张卡片,所以我知道在这一点上一切都是有效的。然而,当我试图显示卡时,它直接进入主卡。我想展示的卡片只是要显示之前在语音识别器中所说的内容,但这不起作用,所以我只放了纯文本,这也不起作用。应用程序启动-语音触发-->语音识别器-->此服务:

public class MedMinderService extends Service {
public String MedName;
public String voiceResults;
private static final String TAG = "ShowData";
private static final String LIVE_CARD_ID = "showdata";
public static final String PREFS_NAME = "MyPreferencesFile";
private TimelineManager mTimelineManager;
private LiveCard mLiveCard;


@Override
public void onCreate() {
    super.onCreate();
    mTimelineManager = TimelineManager.from(this);
}

@Override
public IBinder onBind(Intent intent) {
    return null;
}

public int onStartCommand(Intent intent, int flags, int startId) {

    String voiceResults = intent.getExtras()
            .getString(RecognizerIntent.EXTRA_RESULTS);

    String MedName = voiceResults; //MedName declared

    SharedPreferences MedInfo = getSharedPreferences(PREFS_NAME, 0);
    SharedPreferences.Editor editor = MedInfo.edit();
    editor.putString("MedName", MedName.toString());

    editor.commit();

    mLiveCard = mTimelineManager.getLiveCard(LIVE_CARD_ID);

    Intent i = new Intent(this, ShowDataActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);
    return START_STICKY;
    }

}
底部的意图指向此活动:

public class ShowDataActivity extends Activity {
private LiveCard mLiveCard;
public static final String PREFS_NAME = "MyPreferencesFile";
private GestureDetector mGestureDetector;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

SharedPreferences MedInfo = getSharedPreferences(PREFS_NAME, 0);

Card ShowDataCard = new Card(this);
ShowDataCard.setText("IT WORKS!");
//ShowDataCard.setText(MedInfo.getString("MedName", "your medication"));
View ShowDataCardView = ShowDataCard.toView();
setContentView(ShowDataCardView);
}
被注释掉的“ShowDataCard”是我最初试图用语音识别做的,但它甚至不能用文本“it WORKS!”

再说一遍:我只是想展示一张写着“ItWorks”的卡片


谢谢

让实时卡片只显示文本的最简单方法是使用与
远程视图
兼容的小部件。您可以在以下GDK文档中找到它们的列表:

在“创建低频实时卡”部分下

下面是一些示例代码(基于上面的代码),可以快速实现:

final String LIVE_CARD_ID = "showdata";

mLiveCard = mTimelineManager.getLiveCard(LIVE_CARD_ID);

RemoteViews remoteViews = 
    new RemoteViews(getPackageName(), R.layout.layout_helloglass);

mLiveCard.setViews(remoteViews);

// Make sure Glass navigates to LiveCard immediately
mLiveCard.setNonSilent(true); 

mLiveCard.publish();
对于
layout\u helloglass.xml
,布局文件可以如下所示:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="Hello, Glass!" />
</FrameLayout>

那应该会让你振作起来!希望这会有所帮助。

让实时卡片只显示文本的最简单方法是使用与
远程视图
兼容的小部件。您可以在以下GDK文档中找到它们的列表:

在“创建低频实时卡”部分下

下面是一些示例代码(基于上面的代码),可以快速实现:

final String LIVE_CARD_ID = "showdata";

mLiveCard = mTimelineManager.getLiveCard(LIVE_CARD_ID);

RemoteViews remoteViews = 
    new RemoteViews(getPackageName(), R.layout.layout_helloglass);

mLiveCard.setViews(remoteViews);

// Make sure Glass navigates to LiveCard immediately
mLiveCard.setNonSilent(true); 

mLiveCard.publish();
对于
layout\u helloglass.xml
,布局文件可以如下所示:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="Hello, Glass!" />
</FrameLayout>

那应该会让你振作起来!希望这会有所帮助。

GDK偷窥中有一个错误,阻止了语音提示创建服务。如果在服务的
onStartCommand()
覆盖中插入
Log.d()
调用,他们会发现从未调用过它

此错误已在GDK预览中修复。此行为不应再次出现


这个问题在GDK预览发布后被重写,以删除这个过时的答案。感谢用户Falcon通知我。

GDK偷窥中有一个错误,阻止了语音提示创建服务。如果在服务的
onStartCommand()
覆盖中插入
Log.d()
调用,他们会发现从未调用过它

此错误已在GDK预览中修复。此行为不应再次出现


这个问题在GDK预览发布后被重写,以删除这个过时的答案。感谢用户Falcon通知我。

我应该为LIVE\u卡\u ID放置什么/LIVE\u卡\u ID翻译或指向什么?它应该是xml布局文件还是其他文件?LIVE\u CARD\u ID只是一个
字符串
常量,用于引用正在创建的
LiveCard
,以便以后可以
LiveCard.unpublish()
。看起来该值在您的原始代码中,可能属于类级常量,但为了完整起见,我将其添加到代码中。好的,这是有意义的,但它仍然没有为我发布。好的,您是否尝试使用“It works”命令从主卡使语音识别工作?您是否设置了
/res/xml/voice\u trigger\u start.xml
文件,并在
AndroidManifest.xml
中配置您的服务以将
MedMinderService
与语音触发xml文件关联?如果没有,我可以在答案中添加必要的代码。没有,我添加了,之所以“it works?”是因为如果它显示“it works”,我知道该卡已显示(显然),并且语音识别不起作用。如果它显示了我在语音识别中说的话,我知道这两种方法都有效。(“它有效”应替换为语音识别文本)。我应该为LIVE_CARD_ID输入什么/LIVE_CARD_ID翻译或指向什么?它应该是xml布局文件还是其他文件?LIVE\u CARD\u ID只是一个
字符串
常量,用于引用正在创建的
LiveCard
,以便以后可以
LiveCard.unpublish()
。看起来该值在您的原始代码中,可能属于类级常量,但为了完整起见,我将其添加到代码中。好的,这是有意义的,但它仍然没有为我发布。好的,您是否尝试使用“It works”命令从主卡使语音识别工作?您是否设置了
/res/xml/voice\u trigger\u start.xml
文件,并在
AndroidManifest.xml
中配置您的服务以将
MedMinderService
与语音触发xml文件关联?如果没有,我可以在答案中添加必要的代码。没有,我添加了,之所以“it works?”是因为如果它显示“it works”,我知道该卡已显示(显然),并且语音识别不起作用。如果它显示了我在语音识别中说的话,我知道这两种方法都有效。(“它起作用”应替换为语音识别文本)。这种情况似乎不是最新的。GDK偷偷偷窥通过语音触发启动服务现在还可以。修复了这个问题。谢谢你的提醒。这种情况似乎不是最新的。GDK偷偷偷窥通过语音触发启动服务现在还可以。修复了这个问题。谢谢你的提醒。