卡片没有显示; 直接到家庭卡

Vin*_*lia 1 google-glass google-gdk

我正在尝试展示一张卡片,所以我知道到目前为止所做的一切.但是,当我尝试显示卡时,它会直接进入主卡.我试图显示的卡片只是显示之前在语音识别器中所说的内容但是没有用,所以我只是放了纯文本而且也没用.应用程序 - 语音触发器 - >语音识别器 - >此服务:

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;
    }

}
Run Code Online (Sandbox Code Playgroud)

最底层的意图是这个活动:

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);
}
Run Code Online (Sandbox Code Playgroud)

已被注释掉的"ShowDataCard"是我最初尝试使用语音识别的功能,但它甚至不能用于"IT WORKS!"文本.

再说一遍:我只是想展示一张带有"IT WORKS"字样的卡片

谢谢

jus*_*ger 5

让live卡只显示文本的最简单方法是使用兼容的小部件RemoteViews.您可以在GDK文档中找到它们的列表:

https://developers.google.com/glass/develop/gdk/ui/live-cards

创建低频实时卡部分.

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

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();
Run Code Online (Sandbox Code Playgroud)

布局文件可能如下所示layout_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>
Run Code Online (Sandbox Code Playgroud)

如果您仍希望Activity从您的导航到另一个LiveCard,则需要将其Activity与a PendingIntent关联,然后将其PendingIntent与该LiveCard操作相关联.这将在LiveCard.publish()方法之前发生:

Intent i = new Intent(this, ShowCardActivity.class); 
mLiveCard.setAction(PendingIntent.getActivity(this, 0, i, 0));
Run Code Online (Sandbox Code Playgroud)

这应该让你起来跑!希望这会有所帮助.