Glass GDK: интерактивная карта Intecept

У меня есть приложение Google Glass, которое публикует пару живых карт. Когда я нажимаю на эти карты, я перехожу в пользовательский интерфейс для действия. То, что я хотел бы сделать, это перехватить этот щелчок на одной из карт, и вместо того, чтобы изменить представление на макет "Действия", я хотел бы выполнить некоторые действия (заставить некоторый фоновый код запускаться и обновить другую живую карту),

Я не вижу прослушивателей кликов для карт. Есть ли способ сделать это?

Редактировать::: Для уточнения. Вот очень простой пример того, что я хотел бы попробовать. Это не работает, потому что LiveCards не принимают clickListeners...

package com.example.exampleglasslivecardselection;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.widget.RemoteViews;

import com.google.android.glass.timeline.LiveCard;
import com.google.android.glass.timeline.TimelineManager;

public class MainActivity extends Activity {
    LiveCard card1;
    LiveCard card2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


            if (card1 == null && card2 == null) {
                String cardId = "card1";
                TimelineManager tm = TimelineManager.from(this);

                // set up card 1 and publish
                card1 = tm.getLiveCard(cardId);
                RemoteViews views = new RemoteViews(this.getPackageName(),
                        R.layout.card1_page);
                Intent intent = new Intent(this, MainActivity.class);
                card1.setAction(PendingIntent.getActivity(this, 0,
                        intent, 0));

                card1.publish();


                // set up card 2 and publish
                card2 = tm.getLiveCard(cardId);
                RemoteViews views2 = new RemoteViews(this.getPackageName(),
                        R.layout.card2_page);
                Intent twoIntent = new Intent(this, MainActivity.class);
                card2.setAction(PendingIntent.getActivity(this, 0,
                        intent, 0));


                // set up a click listener or something...(THIS DOESN"T WORK, how would I do this?)
                card2.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // do stuff to card 1...
                        card1.setViews(someNewVewis);
                        // TODO Auto-generated method stub

                    }   

                }
                card2.publish();
            }
        } 
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }



}

1 ответ

Имейте в виду, что с деятельностью не обязательно должен быть связан пользовательский интерфейс - вы можете LiveCardдействие перейти к деятельности, которая выполняет некоторый код в его onCreate метод, никогда не вызывает setContentView, а затем звонит finish чтобы закончить деятельность. Это, вероятно, даст вам функциональность, которую вы хотите.

Однако рассмотрим влияние, которое это может оказать на взаимодействие с пользователем. Живые карты в настоящее время имеют два вида взаимодействия: пакет, который позволяет пользователю щелкнуть глубже в скроллер карты при щелчке (они обычно обозначаются "свернутым углом страницы" в правом верхнем углу карты); или меню параметров, которое появляется при нажатии карты. По крайней мере, вы должны предоставить меню с возможностью, чтобы пользователь мог удалить карту из своей временной шкалы, когда он нажимает на нее.

Другие вопросы по тегам