【问题标题】:Reading sharedpreference on mobile when starting wear app启动穿戴应用程序时在移动设备上阅读共享偏好
【发布时间】:2015-05-03 01:19:20
【问题描述】:

我正在学习 android wear 中的数据通信。我的理解是,移动应用和穿戴应用都需要通过 Google Services API 连接到 DataItem 才能从其中一个或另一个读取数据。

我在移动应用的 sharedpreference 中保存了数据。只有当我打开我的穿戴应用程序时,我想从移动应用程序中的 sharedpreference 中读取数据以显示在穿戴上。

是否会这样,每当移动应用程序在 sharedpreference 中更新此数据时,将该活动连接到 Google Services API 并在 DataItem 中发出请求。那么穿戴应用会监听 WearableListenerService 的变化吗?

我不想让服务一直运行,至少不在移动端。有什么方法可以做到这一点?

【问题讨论】:

    标签: android wear-os android-wear-data-api


    【解决方案1】:

    这是可以采用的方法,但为了省去实现它的麻烦,已经有一个库可以做到这一点。

    WearSharedPreferences

    【讨论】:

    • 我希望学习而不是使用第三方工具。如果我只需要在打开 Activity 时更新 Wear 应用,WearableListenerService 岂不是大材小用?
    【解决方案2】:

    对于数据传输,您可以使用 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);
    }
    

    wear/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
    

    mobile/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){
    
        }
    
    });    
    

    【讨论】:

    • 我对学习而不是使用抽象工具感兴趣。我将看看这个库中的代码。这个库给你带来了什么好处?
    • 它使用起来更快,但是它只是包含一个谷歌消息api,你可以手动完成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多