将数据从“设置活动”发送到“观察面”

时间:2015-12-22 17:02:53

标签: java android android-intent broadcastreceiver wear-os

我刚刚开发了一个简单的Android Wear Watch Face来开始学习Android Wear。

App:https://play.google.com/store/apps/details?id=com.gerardcuadras.minimalflat(如此简单)

当用户点击屏幕时,表盘会改变其背景颜色。现在,我想添加一个显示颜色列表的活动,让用户选择一个而不是点击屏幕。

我将这些行添加到我的清单中,将配置切换添加到表盘。

<meta-data
android:name="com.google.android.wearable.watchface.wearableConfigurationAction"
android:value="com.gerardcuadras.minimalflat.wearable.watchface.CONFIG_DIGITAL" />

之后我创建了一个处理按钮点击的Activity:

public void broadcastIntent(View view){
    Log.d(TAG, "broadcastIntent: Pressed button");
    Intent intent = new Intent();
    intent.setAction("com.gerardcuadras.minimalflat.CUSTOM_INTENT");
    intent.putExtra("extra", "extra data");
    sendBroadcast(intent);
}

然后在MyWatchFace.java上(扩展了CanvasWatchFaceService)我想要处理广播:

public class MyReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d(TAG, "onReceive: WORKS!");
        }
    }

当我运行模拟器并单击按钮时,我在控制台上看到的唯一内容是:

  

&#34; broadcastIntent:按下按钮&#34;

所以接收方(可能是发件人)没有工作,因为它没有记录 onReceive()日志

我在Android上真的很陌生。我确定我做得不好或者我错过了什么。

我将不胜感激任何帮助或任何文档继续逐步学习。

由于

2 个答案:

答案 0 :(得分:0)

这可能更适合使用SharedPreferences(http://developer.android.com/reference/android/content/SharedPreferences.html

使用SharedPreferences,即使用户更改为不同的表盘并返回,也会保留选择。

您还可以使用已注册的首选项更改侦听器来检测配置活动中所做的更改。 http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html

答案 1 :(得分:0)

您可以将WearPreferenceActivity库用于PreferencesActivity,这会更改SharedPreferences android:key="pref_key"。您的表盘通过mSharedPref.getBoolean("pref_key", false);读取偏好设置。

检测首选项更改的一种简单方法是,收听onVisibilityChanged事件,该事件将在PreferencesActivity关闭后调用。