Чтение общих настроек на мобильном телефоне при запуске приложения Wear

Я изучаю передачу данных в Android Wear. Насколько я понимаю, и мобильным, и носимым приложениям необходимо подключаться к DataItem через API сервисов Google, чтобы считывать данные с одного или другого.

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

Было бы похоже на то, что всякий раз, когда мобильное приложение обновляет эти данные в sharedpreference, подключайте эту активность к API сервисов Google и помещайте запрос в DataItem. Тогда приложение для ношения будет прослушивать изменения с помощью WearableListenerService?

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


person awonderer    schedule 03.05.2015    source источник


Ответы (2)


Это был бы подход, но чтобы избавить вас от хлопот с его реализацией, уже есть библиотека, которая это делает.

WearSharedPreferences

person CodeChimp    schedule 03.05.2015
comment
Я хочу учиться вместо использования стороннего инструмента. Если мне нужно только обновить приложение износа при открытии активности, не будет ли WearableListenerService излишним? - person awonderer; 03.05.2015

для передачи данных можно использовать библиотеку Emmet

https://github.com/florent37/emmet

Мы можем представить себе такой протокол

public interface SmartphoneProtocole{
    void getStringPreference(String key);
    void getBooleanPreference(String key);
}

public interface WearProtocole{
    void onStringPreference(String key, String value);
    void onBooleanPreference(String key, boolean value);
}

одежда/WearActivity.java

//access "MY_STRING" sharedpreference
SmartphoneProtocole smartphoneProtocol = emmet.createSender(SmartphoneProtocole.class);
emmet.createReceiver(WearProtocole.class, new WearProtocole(){

    @Override
    void onStringPreference(String key, String value){
        //use your received preference value
    }

    @Override
    void onBooleanPreference(String key, boolean value){

    }

});

smartphoneProtocol.getStringPreference("MY_STRING"); //request the "MY_STRING" sharedpreference

мобильный/WearService.java

final WearProtocole wearProtocol = emmet.createSender(WearProtocole.class);
emmet.createReceiver(SmartphoneProtocol.class, new SmartphoneProtocol(){

    //on received from wear
    @Override
    void getStringPreference(String key){
        String value = //read the value from sharedpreferences

        wearProtocol.onStringPreference(key,value); //send to wear
    }

    @Override
    void getBooleanPreference(String key){

    }

});    
person florent champigny    schedule 03.05.2015
comment
Я заинтересован в обучении, а не в использовании абстрактного инструмента. Я посмотрю на код в этой библиотеке. Какие преимущества дает вам эта библиотека? - person awonderer; 03.05.2015
comment
это быстрее в использовании, но да, это просто приложение API сообщений Google, вы можете сделать это вручную - person florent champigny; 03.05.2015