Sony SmartWatch 2: нажмите кнопку "Получить" в приложении "Хост"

Я использую пример ControlExtension от Sony SDK для SmartWatch 2. У меня есть 4 кнопки в классе ControlExtension. Когда один из них щелкнут, функция onReceive() вызывается в BroadcastReceiver, потому что фильтр Intent com.sonyericsson.extras.aef.control.OBJECT_CLICK_EVENT регистрируется в манифесте. Но как я могу узнать, какая из кнопок была нажата, и если она была нажата или долго нажата?

Это мой BroadcastReceiver:

public class ExtensionReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { Log.d(SampleExtensionService.LOG_TAG, "onReceive: " + intent.getAction()); intent.setClass(context, SampleExtensionService.class); context.startService(intent); }
}

Я также попытался зарегистрировать обработчик кликов в ControlExtension и отправить намерение. Обработчик вызывается, но намерение не получено (я также добавил фильтр намерений в манифесте).

Intent i = new Intent("com.sonyericsson.extras.aef.control.TEST");
sendToHostApp(i);
2 ответа

Обнаружил это сам: в намерениях есть некоторые дополнения:

@Override
public void onReceive(final Context context, final Intent intent) { int layoutId = intent.getIntExtra(Control.Intents.EXTRA_LAYOUT_REFERENCE, -1); int clickType = intent.getIntExtra(Control.Intents.EXTRA_CLICK_TYPE, -1);
}

Документация: http://developer.sonymobile.com/reference/sony-addon-sdk/com/sonyericsson/extras/liveware/aef/control/Control.Intents#CONTROL_OBJECT_CLICK_EVENT_INTENT


Похоже, вы смогли разобраться в этом самостоятельно, но кроме того, вы можете посмотреть методы onObjectClick() и setupClickables() в классе SampleControlSmartWatch2.java для примеров того, как обрабатывать нажатия кнопок.

licensed under cc by-sa 3.0 with attribution.