2014-07-02 2 views
1

Я разрабатываю приложение для Google Glass, которое в основном вызывает несколько действий в последовательности последовательности действий (короче: зарегистрируйте видео , добавить некоторые метаданные через распознавание речи, загрузить файл на сервер, закрыть приложение); эти операции должны выполняться последовательно, поэтому мне не нужно «меню опций».Наличие карты в Google Glass Timeline без использования класса обслуживания (или наличие LiveCard без обязательного действия в меню PendingIntent)

Мне удалось сделать это достаточно хорошо, используя только действия и метод startActivityForResult. У меня есть основное действие, которое вызывает действие по очереди и ждет его результата перед вызовом последующего.

Все работает отлично, Но моя проблема заключается в том, что это приложение является «не постоянно»: II случиться, чтобы закрыть приложение в середине процесса, проводя вниз или позволяя стекло переходит в дежурном режиме , Я теряю приложение и, следовательно, все данные, собранные до тех пор.

Возможно, это связано с тем, что я не добавил карты на шкалу времени. Я хотел бы добавить статическую карту, но я не могу использовать класс TimelineItem (я использую XE17). Я хотел бы добавить LiveCard, но я не хочу добавлять меню (A PendingIntent для LiveCard является обязательным), и я хочу, чтобы «рабочий процесс» запускался немедленно, без необходимости использования второго крана.

Единственное решение, к которому я мог прийти до настоящего времени, - добавить фиктивную активность как PendingIntent для LiveCard (чтобы сделать приложение счастливым), а затем запустить вторую активность внутри onCreate() или onStartCommand (), и эта деятельность будет выполнять настоящую работу (и, возможно, вернуть информацию в LiveCard через некоторую привязку, чтобы избежать потери данных, если приложение закрыто до его естественного завершения); Мне нужно будет запустить этот второй Activity также потому, что в классе Service метода startActivityForResult нет эквивалента.

Тем не менее, я не уверен, что это решение возможно, и я не думаю, что это правильный способ проектирования для стекла.

Как достичь этого (TL; DR: иметь постоянное приложение с или без LiveCard, но без меню и с рабочим процессом/конвейером операций)?

EDIT: это не совсем то, что я хотел, но я нашел решение, используя классический метод для PendingIntent LiveCard. Поэтому я правильно оцениваю ответ Джесси. Для пояснений см. Мой последний комментарий в ответе.

ответ

1

Вы должны быть в состоянии установить PendingIntent как то, что не является меню. Вы можете указать любую случайную активность, в данном случае, свою собственную деятельность.

Вы должны быть в состоянии сделать что-то вроде:

Intent pendingIntent = new Intent(this, AccountsCard.class); 
    pendingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
    mLiveCard.setAction(PendingIntent.getActivity(this, 0, pendingIntent, 0)); 
+0

Хорошо, но это потребует от пользователя второй кран, чтобы начать свою деятельность, не так ли? Или активность запускается сразу, а крана необходимо только для всплывающего меню (т. Е. Вызывая его метод onCreateOptionsMenu)? Я не уверен, что понял, как работает pendingIntent. – ocramot

+0

В принципе, ожидаемое намерение выполняется, как только пользователь нажимает на карту. Представьте себе что-то вроде: mLiveCard.onClick (новый ClickHandler() {public void onClick() {setActvity (intent);}); –

+0

Да, я прочитал его также в руководстве для разработчиков после того, как написал комментарий выше. Это не то поведение, которое я хотел, но я буду делать обычным способом.Более того, я понял, что могу использовать экран запуска livecard в качестве экрана «нажмите, чтобы возобновить, когда вы ушли», в случае отказа. Итак, теперь у меня есть Служба, которая запускает мое первоначальное действие, которое обрабатывает рабочий процесс операций; на каждом шаге основное действие устанавливает указатель в службе вызывающего абонента через привязку. Каждый раз, когда Служба вызывает основное действие нажатием, указатель отправляется как параметр. Таким образом, активность может начинаться там, где она осталась. – ocramot

 Смежные вопросы

  • Нет связанных вопросов^_^