2 * ******************************************************************
4 * Copyright 2016 Samsung Electronics All Rights Reserved.
6 * -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
20 * -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
23 package org.iotivity.base.examples;
25 import android.app.Activity;
26 import android.app.AlertDialog;
27 import android.app.Fragment;
28 import android.content.Context;
29 import android.content.DialogInterface;
30 import android.content.Intent;
31 import android.os.Bundle;
32 import android.util.Log;
33 import android.view.LayoutInflater;
34 import android.view.View;
35 import android.view.ViewGroup;
36 import android.widget.Button;
37 import android.widget.CompoundButton;
38 import android.widget.EditText;
39 import android.widget.LinearLayout;
40 import android.widget.ScrollView;
41 import android.widget.Switch;
42 import android.widget.TextView;
43 import android.widget.Toast;
45 import org.iotivity.base.ModeType;
46 import org.iotivity.base.OcAccountManager;
47 import org.iotivity.base.OcConnectivityType;
48 import org.iotivity.base.OcException;
49 import org.iotivity.base.OcHeaderOption;
50 import org.iotivity.base.OcPlatform;
51 import org.iotivity.base.OcPresenceHandle;
52 import org.iotivity.base.OcRepresentation;
53 import org.iotivity.base.OcResource;
54 import org.iotivity.base.OcResourceHandle;
55 import org.iotivity.base.PlatformConfig;
56 import org.iotivity.base.QualityOfService;
57 import org.iotivity.base.ResourceProperty;
58 import org.iotivity.base.ServiceType;
60 import java.util.ArrayList;
61 import java.util.EnumSet;
62 import java.util.LinkedList;
63 import java.util.List;
64 import java.util.regex.Pattern;
67 * This class is for messaging between the cloud server and the client.
68 * It can handle cloud API manually.
70 public class CloudFragment extends Fragment implements
71 View.OnClickListener, CompoundButton.OnCheckedChangeListener,
72 OcAccountManager.OnPostListener, OcAccountManager.OnGetListener,
73 OcAccountManager.OnDeleteListener, OcResource.OnObserveListener,
74 OcResource.OnMQTopicFoundListener, OcResource.OnMQTopicCreatedListener,
75 OcResource.OnMQTopicSubscribeListener {
77 private static final String TAG = "OIC_SIMPLE_CLOUD";
78 private final String EOL = System.getProperties().getProperty("line.separator");
79 private final Pattern ADDRESS_PORT
81 "((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])" +
82 "\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)" +
83 "\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)" +
84 "\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])" +
87 private Activity mActivity;
88 private Context mContext;
90 private QualityOfService mQos = QualityOfService.LOW;
92 private LinearLayout mAccountLayout;
93 private LinearLayout mRDLayout;
94 private LinearLayout mMQLayout;
96 private Switch mAccountSwitch;
97 private Switch mRDSwitch;
98 private Switch mMQSwitch;
100 private TextView mAccountText;
101 private TextView mRDText;
102 private TextView mMQText;
103 private ScrollView mScrollView;
104 private TextView mActionLog;
105 private TextView mResultLog;
107 private Button mSetIPButton;
108 private Button mSignUpButton;
109 private Button mSignInButton;
110 private Button mSignOutButton;
111 private Button mInviteButton;
112 private Button mRdPubButton;
113 private Button mRdDelButton;
114 private Button mDevicePresenceButton;
115 private Button mMqBrokerButton;
116 private Button mCreateTopicButton;
117 private Button mSubTopicButton;
118 private Button mUnsubTopicButton;
119 private Button mPubToicButton;
121 private OcAccountManager mAccountManager;
122 private String mAccesstoken;
123 private String mRefreshtoken;
124 private String mUserUuid;
125 private String mAuthCode;
126 private int mRequestCode;
127 private final int REQUEST_LOGIN = 1;
129 private OcResource MQbrokerResource = null;
130 private OcResource currentTopicResource = null;
131 private boolean switchingFlag = true;
132 private int subFlag = -1;
133 private int roomNum = 1;
134 private String defaultTopicFullName = Common.MQ_DEFAULT_TOPIC_URI;
135 private int cancelSubScribe = 0xffffff;
137 private OcResourceHandle localLightResourceHandle = null;
138 private List<OcResourceHandle> mResourceHandleList = new LinkedList<>();
139 private OcPresenceHandle mOcPresenceHandle;
140 //variables related observer
141 private int maxSequenceNumber = 0xFFFFFF;
144 public void onCreate(Bundle savedInstanceState) {
145 super.onCreate(savedInstanceState);
147 mActivity = getActivity();
148 mContext = mActivity.getBaseContext();
149 initOcPlatform(ModeType.CLIENT_SERVER);
152 private void initOcPlatform(ModeType type) {
153 PlatformConfig cfg = new PlatformConfig(mActivity, mContext,
159 OcPlatform.Configure(cfg);
162 private void signUp() {
165 mAccountManager = OcPlatform.constructAccountManagerObject(
167 EnumSet.of(OcConnectivityType.CT_ADAPTER_TCP));
168 } catch (OcException e) {
172 Intent intentLogin = new Intent(mContext, LoginActivity.class);
173 startActivityForResult(intentLogin, REQUEST_LOGIN);
176 private void signIn() {
179 mAccountManager.signIn(mUserUuid, mAccesstoken, this);
180 } catch (OcException e) {
185 private void signOut() {
188 mAccountManager.signOut(this);
189 } catch (OcException e) {
194 private void refreshAccessToken() {
197 mAccountManager.refreshAccessToken(mUserUuid, mRefreshtoken, this);
198 } catch (OcException e) {
203 private void inviteUser() {
210 public void onActivityResult(int requestCode, int resultCode, Intent data) {
211 super.onActivityResult(requestCode, resultCode, data);
212 if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_LOGIN) {
213 mAuthCode = data.getStringExtra("authCode");
214 msg("\tauthCode: " + mAuthCode);
218 mAccountManager.signUp("github", mAuthCode, this);
219 } catch (OcException e) {
226 public void onPostCompleted(List<OcHeaderOption> list, OcRepresentation ocRepresentation) {
228 if (mRequestCode == 0) {
229 msg("\tSign Up Success");
230 if (ocRepresentation.hasAttribute("uid")) {
231 mUserUuid = ocRepresentation.getValue("uid");
232 msg("\tuserID: " + mUserUuid);
234 if (ocRepresentation.hasAttribute("accesstoken")) {
235 mAccesstoken = ocRepresentation.getValue("accesstoken");
236 msg("\taccessToken: " + mAccesstoken);
238 if (ocRepresentation.hasAttribute("refreshtoken")) {
239 mRefreshtoken = ocRepresentation.getValue("refreshtoken");
240 msg("\trefreshtoken: " + mRefreshtoken);
242 } else if (mRequestCode == 1) {
243 msg("\tSign In Success");
244 } else if (mRequestCode == 2) {
245 msg("\tSign Out Success");
246 } else if (mRequestCode == 3) {
247 msg("\tRefresh AccessToken Success");
248 } else if (mRequestCode == 4) {
249 msg("\tDelete Device Success");
251 } catch (OcException e) {
257 public void onPostFailed(Throwable throwable) {
259 if (throwable instanceof OcException) {
260 OcException ocEx = (OcException) throwable;
261 Log.e(TAG, ocEx.toString());
266 public void onGetCompleted(List<OcHeaderOption> list, OcRepresentation ocRepresentation) {
271 public void onGetFailed(Throwable throwable) {
276 public void onDeleteCompleted(List<OcHeaderOption> list) {
281 public void onDeleteFailed(Throwable throwable) {
285 // ******************************************************************************
286 // End of the Account Manager specific code
287 // ******************************************************************************
289 OcPlatform.OnPublishResourceListener resourcePublishListener =
290 new OcPlatform.OnPublishResourceListener() {
292 public void onPublishResourceCompleted(OcRepresentation ocRepresentation) {
293 msg("onPublishResourceCompleted");
295 for (OcRepresentation child : ocRepresentation.getChildren()) {
297 msg("\tPublished Resource URI : " + child.getValue("href"));
298 } catch (OcException e) {
305 public void onPublishResourceFailed(Throwable throwable) {
306 msg("onPublishResourceFailed has failed");
310 OcPlatform.OnDeleteResourceListener resourceDeleteListener =
311 new OcPlatform.OnDeleteResourceListener() {
313 public void onDeleteResourceCompleted(int resultCode) {
314 msg("onDeleteResourceCompleted, result is " + resultCode);
318 private void createResource() {
319 if (localLightResourceHandle == null) {
321 localLightResourceHandle = OcPlatform.registerResource(
322 Common.RESOURCE_URI, //resource URI
323 Common.RESOURCE_TYPE, //resource type name
324 Common.RESOURCE_INTERFACE, //using default interface
325 null, //use default entity handler
326 EnumSet.of(ResourceProperty.DISCOVERABLE)
328 mResourceHandleList.add(localLightResourceHandle);
329 msg("Create Local Resource is success.");
330 } catch (OcException e) {
331 Log.e(TAG, e.toString());
336 private void publishResourceToRD() {
337 // Create Local Resource.
341 // Publish Virtual Resource to Resource-Directory.
342 Log.d(TAG, "Publish Virtual Resource to Resource-Directory.");
343 OcPlatform.publishResourceToRD(
344 Common.HOST, EnumSet.of(OcConnectivityType.CT_ADAPTER_TCP),
345 resourcePublishListener
348 // Publish Local Resource to Resource-Directory.
349 Log.d(TAG, "Publish Local Resource to Resource-Directory.");
350 OcPlatform.publishResourceToRD(
351 Common.HOST, EnumSet.of(OcConnectivityType.CT_ADAPTER_TCP), mResourceHandleList,
352 resourcePublishListener
354 } catch (OcException e) {
355 Log.e(TAG, e.toString());
359 private void deleteResourceFromRD() {
361 // Delete Resource from Resource-Directory.
362 Log.d(TAG, "Delete Resource from Resource-Directory.");
363 OcPlatform.deleteResourceFromRD(
364 Common.HOST, EnumSet.of(OcConnectivityType.CT_ADAPTER_TCP),
365 resourceDeleteListener
367 } catch (OcException e) {
368 Log.e(TAG, e.toString());
372 private void subscribeDevicePresence() {
374 List<String> di = new ArrayList<>();
375 mOcPresenceHandle = OcPlatform.subscribeDevicePresence(
376 Common.HOST, di, EnumSet.of(OcConnectivityType.CT_ADAPTER_TCP), this);
377 } catch (OcException e) {
383 public void onObserveCompleted(List<OcHeaderOption> list,
384 OcRepresentation ocRepresentation, int sequenceNumber) {
385 if (sequenceNumber != maxSequenceNumber + 1) {
386 msg("OBSERVE Result:");
387 msg("\tSequenceNumber:" + sequenceNumber);
389 if (ocRepresentation.hasAttribute("prslist")) {
390 OcRepresentation[] prslist = ocRepresentation.getValue("prslist");
391 if (prslist != null) {
392 msg("\tDevice Presence");
393 for (OcRepresentation prs : prslist) {
394 msg("\t\tDevice ID : " + prs.getValue("di"));
395 msg("\t\tState : " + prs.getValue("state"));
399 } catch (OcException e) {
406 public void onObserveFailed(Throwable throwable) {
410 // ******************************************************************************
411 // End of the Resource Directory specific code
412 // ******************************************************************************
415 List<String> resourceTypeList = new ArrayList<String>();
416 List<String> resourceInterfaceList = new ArrayList<String>();
417 resourceInterfaceList.add(Common.RESOURCE_INTERFACE);
418 resourceTypeList.add("ocf.wk.ps");
420 MQbrokerResource = OcPlatform.constructResourceObject(
421 "coap+tcp://" + Common.TCP_ADDRESS + ":" + Common.TCP_PORT,
422 Common.MQ_BROKER_URI,
423 EnumSet.of(OcConnectivityType.CT_ADAPTER_TCP, OcConnectivityType.CT_IP_USE_V4),
425 resourceTypeList, resourceInterfaceList);
427 msg("found MQ broker : " + MQbrokerResource.getHost());
431 } catch (OcException e) {
436 void discoveryMQTopics() {
438 if (null != MQbrokerResource) {
439 MQbrokerResource.discoveryMQTopics(
440 new HashMap<String, String>(),
441 this, QualityOfService.LOW);
444 } catch (OcException e) {
450 synchronized public void onTopicDiscoveried(OcResource ocResource) {
451 synchronized (this) {
452 String resourceUri = ocResource.getUri();
454 Log.d(TAG, "onTopicDiscoveried : " + resourceUri + " found");
455 msg("onTopicDiscoveried : " + resourceUri + " found");
460 public void onDiscoveryTopicFailed(Throwable ex, String uri) {
461 Log.e(TAG, "onFindTopicFailed : ", ex);
463 if (ex instanceof OcException) {
464 OcException ocEx = (OcException) ex;
465 ErrorCode errCode = ocEx.getErrorCode();
466 Log.d(TAG, "onFindTopicFailed Code: " + errCode);
467 Log.d(TAG, "onFindTopicFailed Code: " + errCode.ordinal());
468 Log.d(TAG, "onFindTopicFailed uri: " + uri);
471 Log.e(TAG, ex.getMessage());
475 void createMQTopic() {
477 if (null != MQbrokerResource) {
478 Map<String, String> queryParameters = new HashMap<String, String>();
479 queryParameters.put("rt", "light");
480 MQbrokerResource.createMQTopic(
481 new OcRepresentation(),
482 defaultTopicFullName,
485 QualityOfService.LOW);
487 } catch (OcException e) {
493 synchronized public void onTopicResourceCreated(OcResource ocResource) {
494 synchronized (this) {
495 Log.d(TAG, "onTopicResourceCreated");
496 String resourceUri = ocResource.getUri();
497 currentTopicResource = ocResource;
498 Log.d(TAG, "onTopicResourceCreated : " + resourceUri + " found");
500 msg("onTopicCreated : " + currentTopicResource.getUri());
505 public void onCreateTopicFailed(Throwable ex, String uri) {
506 Log.e(TAG, "onCreateTopicFailed : ", ex);
508 if (ex instanceof OcException) {
509 OcException ocEx = (OcException) ex;
510 ErrorCode errCode = ocEx.getErrorCode();
511 Log.d(TAG, "onCreateTopicFailed error Code: " + errCode);
512 Log.d(TAG, "onCreateTopicFailed error Code: " + errCode.ordinal());
513 Log.d(TAG, "onCreateTopicFailed error uri: " + uri);
515 // retry to create after increase room number
516 defaultTopicFullName = Common.MQ_DEFAULT_TOPIC_URI + (roomNum++);
519 Log.e(TAG, ex.getMessage());
523 void subscribeMQTopic() {
524 Map<String, String> queryParameters = new HashMap<String, String>();
525 queryParameters.put("rt", "light");
528 if (null != currentTopicResource) {
529 currentTopicResource.subscribeMQTopic(
532 QualityOfService.LOW);
535 } catch (OcException e) {
541 synchronized public void onSubScribeCompleted(List<OcHeaderOption> headerOptionList,
542 OcRepresentation ocRepresentation,
543 int sequenceNumber) {
544 synchronized (this) {
545 String resourceUri = ocRepresentation.getUri();
546 Log.d(TAG, "onSubScribeCompleted sequenceNumber : " + sequenceNumber);
549 OcRepresentation val = ocRepresentation.getValue("message");
551 if (sequenceNumber == 0) {
552 Log.d(TAG, "onSubScribeCompleted : " + resourceUri);
559 msg("onSubScribeCompleted : " + resourceUri);
561 Log.d(TAG, "onSubScribeCompleted : " + resourceUri);
562 Log.d(TAG, "onSubScribeCompleted : " + val.getValue("blue"));
563 Log.d(TAG, "onSubScribeCompleted : " + val.getValue("red"));
565 msg("onSubScribeCompleted : " + resourceUri + ", blue light is "
566 + val.getValue("blue").toString());
567 msg("onSubScribeCompleted : " + resourceUri + ", red light is "
568 + val.getValue("red").toString());
570 } catch (OcException e) {
577 synchronized public void onUnsubScribeCompleted(OcRepresentation ocRepresentation,
578 int sequenceNumber) {
579 synchronized (this) {
580 String resourceUri = ocRepresentation.getUri();
581 Log.d(TAG, "onUnsubScribeCompleted sequenceNumber : " + sequenceNumber);
583 if (sequenceNumber == cancelSubScribe + 1) {
584 Log.d(TAG, "onUnsubScribeCompleted : " + resourceUri);
585 msg("onUnsubScribeCompleted : " + resourceUri);
591 public void onSubScribeFailed(Throwable ex) {
592 Log.d(TAG, "onSubScribeFailed : ", ex);
594 if (ex instanceof OcException) {
595 OcException ocEx = (OcException) ex;
596 ErrorCode errCode = ocEx.getErrorCode();
597 Log.d(TAG, "onSubScribeFailed error Code: " + errCode);
598 Log.d(TAG, "onSubScribeFailed error Code: " + errCode.ordinal());
602 Log.e(TAG, ex.getMessage());
607 void unsubscribeMQTopic() {
610 if (null != currentTopicResource) {
611 currentTopicResource.unsubscribeMQTopic(QualityOfService.LOW);
614 } catch (OcException e) {
619 void publishMQTopic() {
622 OcRepresentation rep = new OcRepresentation();
623 OcRepresentation msg = new OcRepresentation();
626 msg.setValue("blue", "on");
627 msg.setValue("red", "off");
628 switchingFlag = false;
630 msg.setValue("blue", "off");
631 msg.setValue("red", "on");
632 switchingFlag = true;
634 rep.setValue("message", msg);
636 if (null != currentTopicResource) {
637 currentTopicResource.publishMQTopic(rep,
638 new HashMap<String, String>(),
640 QualityOfService.LOW);
643 } catch (OcException e) {
648 OcResource.OnPostListener mqPublishListener =
649 new OcResource.OnPostListener() {
651 public void onPostCompleted(List<OcHeaderOption> list,
652 OcRepresentation ocRepresentation) {
653 Log.i(TAG, "onPublish completed");
654 msg("onPublish completed");
658 public void onPostFailed(Throwable throwable) {
659 Log.e(TAG, "onPublish failed");
660 msg("onPublish failed");
664 void requestMQPublish() {
667 if (null != currentTopicResource) {
668 currentTopicResource.requestMQPublish(
669 new HashMap<String, String>(),
671 QualityOfService.LOW);
673 } catch (OcException e) {
678 OcResource.OnPostListener mqReqPubListener =
679 new OcResource.OnPostListener() {
681 public void onPostCompleted(List<OcHeaderOption> list,
682 OcRepresentation ocRepresentation) {
683 Log.i(TAG, "onRequestPublish completed");
684 msg("onPublish completed");
688 public void onPostFailed(Throwable throwable) {
689 Log.e(TAG, "onRequestPublish failed");
690 msg("onRequestPublish failed");
695 // ******************************************************************************
696 // End of the Message Queue specific code
697 // ******************************************************************************
699 private void showTCPInput() {
701 LayoutInflater layoutInflater = LayoutInflater.from(mContext);
702 View inputView = layoutInflater.inflate(R.layout.tcp_input, null);
703 AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mActivity);
704 alertDialogBuilder.setView(inputView);
706 final EditText editText = (EditText) inputView.getRootView().findViewById(R.id.inputText);
707 StringBuilder sb = new StringBuilder();
708 sb.append(Common.TCP_ADDRESS);
709 sb.append(Common.PORT_SEPARATOR);
710 sb.append(Common.TCP_PORT);
711 editText.setText(sb.toString());
714 .setPositiveButton("OK", new DialogInterface.OnClickListener() {
715 public void onClick(DialogInterface dialog, int id) {
716 if (editText.getText().length() != 0) {
717 final String hosts = editText.getText().toString();
718 boolean isValid = ADDRESS_PORT.matcher(hosts).matches();
720 final String host[] = hosts.split(Common.PORT_SEPARATOR);
721 Common.TCP_ADDRESS = host[0];
722 Common.TCP_PORT = host[1];
724 StringBuilder sb = new StringBuilder();
725 sb.append(Common.COAP_TCP);
726 sb.append(Common.TCP_ADDRESS);
727 sb.append(Common.PORT_SEPARATOR);
728 sb.append(Common.TCP_PORT);
729 Common.HOST = sb.toString();
731 Toast.makeText(mContext, "Invalid IP", Toast.LENGTH_SHORT).show();
737 .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
738 public void onClick(DialogInterface dialog, int id) {
743 AlertDialog alert = alertDialogBuilder.create();
747 private void showInviteUser() {
749 LayoutInflater layoutInflater = LayoutInflater.from(mContext);
750 View inputView = layoutInflater.inflate(R.layout.tcp_input, null);
751 AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mActivity);
752 alertDialogBuilder.setView(inputView);
754 final TextView textView = (TextView) inputView.getRootView().findViewById(R.id.inputView);
755 textView.setText("Please enter user id to invite.");
756 final EditText editText = (EditText) inputView.getRootView().findViewById(R.id.inputText);
760 .setPositiveButton("OK", new DialogInterface.OnClickListener() {
761 public void onClick(DialogInterface dialog, int id) {
762 if (editText.getText().length() != 0) {
763 final String userID = editText.getText().toString();
764 msg("User ID: " + userID);
768 .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
769 public void onClick(DialogInterface dialog, int id) {
774 AlertDialog alert = alertDialogBuilder.create();
778 private void showInviteMsg(String userID) {
780 AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mActivity);
781 alertDialogBuilder.setTitle("Invitation");
782 StringBuilder sb = new StringBuilder();
783 sb.append("Invited from ");
786 sb.append("Accept?");
787 alertDialogBuilder.setMessage(sb.toString());
791 .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
792 public void onClick(DialogInterface dialog, int id) {
796 .setNegativeButton("No", new DialogInterface.OnClickListener() {
797 public void onClick(DialogInterface dialog, int id) {
802 AlertDialog alert = alertDialogBuilder.create();
806 private void msg(final String text) {
807 mActivity.runOnUiThread(new Runnable() {
809 mResultLog.append(EOL);
810 mResultLog.append(text);
811 mScrollView.fullScroll(View.FOCUS_DOWN);
818 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
822 visible = View.VISIBLE;
827 switch (buttonView.getId()) {
828 case R.id.account_switch:
829 mAccountLayout.setVisibility(visible);
832 mRDLayout.setVisibility(visible);
835 mMQLayout.setVisibility(visible);
841 public void onClick(View view) {
842 mActionLog.setText("[Action Log]" + EOL);
843 switch (view.getId()) {
845 case R.id.setip_button:
846 mActionLog.append("Set IP" + EOL);
849 case R.id.signup_button:
850 mActionLog.append("Sign Up" + EOL);
853 case R.id.signin_button:
854 mActionLog.append("Sign In" + EOL);
857 case R.id.signout_button:
858 mActionLog.append("Sign Out" + EOL);
861 case R.id.invite_button:
862 mActionLog.append("Refresh Access Token" + EOL);
863 refreshAccessToken();
867 case R.id.rdpub_button:
868 mActionLog.append("Publish Resource To RD" + EOL);
869 publishResourceToRD();
871 case R.id.rddel_button:
872 mActionLog.append("Delete Resource From RD" + EOL);
873 deleteResourceFromRD();
875 case R.id.rddp_button:
876 mActionLog.append("Subscribe Device Presence" + EOL);
877 subscribeDevicePresence();
881 case R.id.mqget_button:
882 mActionLog.append("Get MQ Broker" + EOL);
885 case R.id.mqcreate_button:
886 mActionLog.append("Create MQ Topic" + EOL);
889 case R.id.mqsub_button:
890 mActionLog.append("Subscribe MQ Topic" + EOL);
893 case R.id.mqunsub_button:
894 mActionLog.append("Un-subscribe MQ Topic" + EOL);
895 unsubscribeMQTopic();
897 case R.id.mqpub_button:
898 mActionLog.append("Publish MQ Topic" + EOL);
905 public View onCreateView(LayoutInflater inflater, ViewGroup container,
906 Bundle savedInstanceState) {
907 View rootView = inflater.inflate(R.layout.fragment_cloud, container, false);
909 mAccountLayout = (LinearLayout) rootView.findViewById(R.id.account_layout);
910 mRDLayout = (LinearLayout) rootView.findViewById(R.id.rd_layout);
911 mMQLayout = (LinearLayout) rootView.findViewById(R.id.mq_layout);
913 mAccountSwitch = (Switch) rootView.findViewById(R.id.account_switch);
914 mRDSwitch = (Switch) rootView.findViewById(R.id.rd_switch);
915 mMQSwitch = (Switch) rootView.findViewById(R.id.mq_switch);
916 mAccountSwitch.setOnCheckedChangeListener(this);
917 mRDSwitch.setOnCheckedChangeListener(this);
918 mMQSwitch.setOnCheckedChangeListener(this);
920 mAccountText = (TextView) rootView.findViewById(R.id.account_view);
921 mRDText = (TextView) rootView.findViewById(R.id.rd_view);
922 mMQText = (TextView) rootView.findViewById(R.id.mq_view);
923 mScrollView = (ScrollView) rootView.findViewById(R.id.scroll_view);
924 mActionLog = (TextView) rootView.findViewById(R.id.action_log_view);
925 mResultLog = (TextView) rootView.findViewById(R.id.result_log_view);
927 mSetIPButton = (Button) rootView.findViewById(R.id.setip_button);
928 mSignUpButton = (Button) rootView.findViewById(R.id.signup_button);
929 mSignInButton = (Button) rootView.findViewById(R.id.signin_button);
930 mSignOutButton = (Button) rootView.findViewById(R.id.signout_button);
931 mInviteButton = (Button) rootView.findViewById(R.id.invite_button);
932 mSetIPButton.setOnClickListener(this);
933 mSignUpButton.setOnClickListener(this);
934 mSignInButton.setOnClickListener(this);
935 mSignOutButton.setOnClickListener(this);
936 mInviteButton.setOnClickListener(this);
938 mRdPubButton = (Button) rootView.findViewById(R.id.rdpub_button);
939 mRdDelButton = (Button) rootView.findViewById(R.id.rddel_button);
940 mDevicePresenceButton = (Button) rootView.findViewById(R.id.rddp_button);
941 mRdPubButton.setOnClickListener(this);
942 mRdDelButton.setOnClickListener(this);
943 mDevicePresenceButton.setOnClickListener(this);
945 mMqBrokerButton = (Button) rootView.findViewById(R.id.mqget_button);
946 mCreateTopicButton = (Button) rootView.findViewById(R.id.mqcreate_button);
947 mSubTopicButton = (Button) rootView.findViewById(R.id.mqsub_button);
948 mUnsubTopicButton = (Button) rootView.findViewById(R.id.mqunsub_button);
949 mPubToicButton = (Button) rootView.findViewById(R.id.mqpub_button);
950 mMqBrokerButton.setOnClickListener(this);
951 mCreateTopicButton.setOnClickListener(this);
952 mSubTopicButton.setOnClickListener(this);
953 mUnsubTopicButton.setOnClickListener(this);
954 mPubToicButton.setOnClickListener(this);
960 public void onResume() {
965 public void onDestroy() {