简体   繁体   中英

How to know Google Glass TimelineManager LiveCard is resumed

I am developing a simple hello world application in Google Glass using Service. In my application I used TimelineManager to display a LiveCard . I want to invoke a http call when the app is visible to user (I mean when user scrolled from other app to our app).

I know if we use Activity, onResume() invoked automatically, but I am doing it in Service.

Please let me know which method will be invoked when app is resumed to user .

public class MyGlassService extends Service {

    private static final String TAG = "SocketService";
    private static final String LIVE_CARD_ID = "livecard";
    private TimelineManager mTimelineManager;
    private LiveCard mLiveCard;
    private TextToSpeech mSpeech;
    private final IBinder mBinder = new MainBinder();

    private TextView txtName, txtBalance;
    private RemoteViews remoteView;
    private WakeLock screenLock;    


    public class MainBinder extends Binder {
        public void sayMessage() {
            mSpeech.speak(getString(R.string.hello_world),
                    TextToSpeech.QUEUE_FLUSH, null);
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mTimelineManager = TimelineManager.from(this);
        mSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {
                // do nothing
            }
        });

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        remoteView = new RemoteViews(this.getPackageName(), R.layout.activity_main);
        if (mLiveCard == null) {
            mLiveCard = mTimelineManager.createLiveCard(LIVE_CARD_ID);
            remoteView.setTextViewText(R.id.name, getString(R.string.pre_screen_msg));
            mLiveCard.setViews(remoteView);

        }
        return START_STICKY;
    }   


    @Override
    public void onDestroy() {
        if (mLiveCard != null && mLiveCard.isPublished()) {
            mLiveCard.unpublish();
            mLiveCard = null;
        }
        mSpeech.shutdown();

        mSpeech = null;
        super.onDestroy();
    }

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

    public String toHexString(byte[] data) {
        String s = new String(data);
        return s;
    }
}

Live cards do not provide precise lifecycle methods like activities do to let you know when a user has scrolled to or away from one.

If you would like to see this feature, please post a feature request describing your use case on our issue tracker .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM