/* PebbleSystemProfile.java Copyright (c) 2014 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.deviceplugin.pebble.profile; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import com.getpebble.android.kit.util.PebbleDictionary; import org.deviceconnect.android.deviceplugin.pebble.PebbleDeviceService; import org.deviceconnect.android.deviceplugin.pebble.setting.PebbleServiceListActivity; import org.deviceconnect.android.deviceplugin.pebble.util.PebbleManager; import org.deviceconnect.android.event.EventManager; import org.deviceconnect.android.message.MessageUtils; import org.deviceconnect.android.profile.SystemProfile; import org.deviceconnect.android.profile.api.DConnectApi; import org.deviceconnect.android.profile.api.DeleteApi; import org.deviceconnect.message.DConnectMessage; import org.deviceconnect.message.intent.message.IntentDConnectMessage; import java.util.logging.Logger; /** * Pebbleデバイスプラグイン, System プロファイル. * @author NTT DOCOMO, INC. */ public class PebbleSystemProfile extends SystemProfile { /** debug log. */ private Logger mLogger = Logger.getLogger("Pebble"); private final DConnectApi mDeleteEventsApi = new DeleteApi() { @Override public String getAttribute() { return ATTRIBUTE_EVENTS; } @Override public boolean onRequest(final Intent request, final Intent response) { PebbleManager mgr = ((PebbleDeviceService) getContext()).getPebbleManager(); mLogger.fine("onDeleteEvents delete system"); // PebbleにEVENT解除依頼を送る sendDeleteEvent(PebbleManager.PROFILE_SYSTEM, PebbleManager.SYSTEM_ATTRIBUTE_EVENTS, mgr); // ここでイベントの解除をする String origin = request.getStringExtra(IntentDConnectMessage.EXTRA_ORIGIN); boolean isSuccess = EventManager.INSTANCE.removeEvents(origin); if (isSuccess) { setResult(response, DConnectMessage.RESULT_OK); } else { MessageUtils.setUnknownError(response, "Failed to remove events for origin = " + origin); } return true; } }; public PebbleSystemProfile() { addApi(mDeleteEventsApi); } @Override protected Class<? extends Activity> getSettingPageActivity(final Intent request, final Bundle param) { return PebbleServiceListActivity.class; } /** * delete event を送る. * @param profile profile. * @param attribute attribute. * @param mgr PebbleManager */ private void sendDeleteEvent(final int profile, final int attribute, final PebbleManager mgr) { PebbleDictionary dic = new PebbleDictionary(); dic.addInt8(PebbleManager.KEY_PROFILE, (byte) profile); dic.addInt8(PebbleManager.KEY_ATTRIBUTE, (byte) attribute); dic.addInt8(PebbleManager.KEY_ACTION, (byte) PebbleManager.ACTION_DELETE); mgr.sendCommandToPebble(dic, null); } }