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偷偷偷窥通过语音触发启动服务现在还可以。修复了这个问题。谢谢你的提醒。