Как узнать, неактивно ли мое расширение Android SmartWatch?

Я разрабатываю приложение смарт-расширения RSS, используя API уведомлений. Я хотел бы знать, как получить активный/неактивный статус моего смарт-расширения (первый флажок при нажатии на смарт-расширение RSS в приложении SmartWatch).

В примере NotificationAPI используется дополнительный флажок для запуска или отключения службы загрузки данных, генерирующих уведомления, но я не хочу заставлять пользователя переходить в подменю и активировать загрузку данных. Если пользователь активирует мое интеллектуальное расширение RSS, он уже ожидает, что расширение уведомит его, если в RSS появятся какие-то новые элементы.

Существует обратный вызов, чтобы узнать, когда мое интеллектуальное расширение правильно добавлено в приложения liveware/smartwatch (onRegisterResult), но я не нашел обратного вызова, чтобы узнать, действительно ли интеллектуальное расширение активно или нет.

Заранее спасибо!


person galex    schedule 09.05.2012    source источник


Ответы (1)


SampleNotificationExtension SDK Smart Extension был предоставлен, чтобы привести несколько примеров:

  • как добавлять/обновлять/удалять/считывать данные в/из базы данных уведомлений, которая находится в приложении Liveware Manager (которое является центром Smart Extension API) через поставщика контента

  • как реагировать на событие, когда пользователь открывает уведомление на SmartWatch и, например, нажимает кнопку действия

В примере расширения есть служба, которая каждые 10 секунд загружает базу данных уведомлений, которая затем отображается на устройстве SmartWatch. Параметр включения/выключения в активности предпочтений предназначен только для запуска и остановки цикла, который питает базу данных.

Ok.

Итак, я предполагаю, что вы хотите подписаться на RSS-каналы, и когда будут поступать новые сообщения, вы хотите, чтобы они распространялись на SmartWatch. Вам, вероятно, нужно запустить службу, как в примере, и она, вероятно, должна работать до тех пор, пока часы подключены к телефону. Это вы можете указать здесь:

@Override
protected boolean keepRunningWhenConnected() {
    return true;
}

Если вы используете служебные классы SmartExtension, ваше расширение будет автоматически зарегистрировано, и ваша служба будет запущена. В примере расширения после регистрации расширения выполняется проверка, активировал ли пользователь расширение через настройки.

@Override
public void onRegisterResult(boolean result) {
    /.../
    boolean isActive = prefs.getBoolean(
            getString(R.string.preference_key_is_active), false);
    if (isActive) {
        startAddData();
    }
}

Вы можете оставить это, если хотите, но это не обязательно. Как указывалось ранее, это только для запуска и остановки подачи данных. В любом случае, вы можете начать проверку RSS после регистрации.

Если пользователь активирует мое интеллектуальное расширение RSS, он уже ожидает, что расширение уведомит его, если в RSS появятся какие-то новые элементы.

Когда служба запускается, вы можете проверить дельту между тем, что находится в базе данных уведомлений, и тем, что подается из RSS-канала.

НУ, длинный ответ, надеюсь, это поможет!

person Jerker    schedule 11.05.2012
comment
Я использовал SampleNotificationExtension в качестве основы для своего расширения, что, кстати, прекрасно (спасибо за то, что выложили так много примеров). Я хотел бы остановить службу (убрать будильник), если пользователь отключил расширение, даже если часы все еще подключены к телефону. Я мог бы воспроизвести такое же поведение с помощью SampleNotificationExtension. Есть ли способ узнать, активно ли расширение или нет? - person galex; 11.05.2012
comment
К сожалению, настройка активации/деактивации на главном экране настроек всех расширений не может быть прочитана расширениями. Он хранится и поддерживается в хост-приложении SmartWatch. Предпочтение isActive, упомянутое в моем ответе, является локальным для SampleNotificationExtension. Таким образом, вы не можете знать, деактивировал ли пользователь ваше расширение. Извините, надо было сказать об этом с самого начала. - person Jerker; 11.05.2012
comment
Может ли это появиться в будущей версии SDK как намерение, отправленное получателю расширения? - person galex; 11.05.2012
comment
Скажем так, это то, что мы принимаем во внимание, но я не могу сказать, когда и когда. - person Jerker; 11.05.2012
comment
Хорошо, а пока я предоставлю активное предпочтение, как это делает SampleNotificationExtension. - person galex; 12.05.2012