1 /******************************************************************
\r
2 * Copyright 2016 Samsung Electronics All Rights Reserved.
\r
6 * Licensed under the Apache License, Version 2.0 (the "License");
\r
7 * you may not use this file except in compliance with the License.
\r
8 * You may obtain a copy of the License at
\r
10 * http://www.apache.org/licenses/LICENSE-2.0
\r
12 * Unless required by applicable law or agreed to in writing, software
\r
13 * distributed under the License is distributed on an "AS IS" BASIS,
\r
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
15 * See the License for the specific language governing permissions and
\r
16 * limitations under the License.
\r
17 ******************************************************************/
\r
19 package com.sec.noticonsumerexample;
\r
21 import android.os.Bundle;
\r
22 import android.os.Handler;
\r
23 import android.os.Message;
\r
24 import android.app.Activity;
\r
25 import android.util.Log;
\r
26 import android.view.View;
\r
27 import android.widget.Button;
\r
28 import android.widget.TextView;
\r
29 import android.widget.Toast;
\r
31 import org.iotivity.service.ns.common.TopicsList;
\r
32 import org.iotivity.service.ns.common.Topic;
\r
34 public class MainActivity extends Activity
\r
36 private final String TAG = "NS_MAIN_ACTIVITY";
\r
38 private Button btnStart;
\r
39 private Button btnStop;
\r
40 private Button btnRescan;
\r
41 private Button btnEnableRemoteService;
\r
42 private Button btnGetTopicList;
\r
43 private Button btnUpdateTopicList;
\r
44 private Button btnClearLog;
\r
45 private static TextView TvLog;
\r
47 private boolean isStarted = false;
\r
49 private ConsumerSample mConsumerSample = null;
\r
51 private static final int PROVIDER_DISCOVERED = 1;
\r
52 private static final int STATE_CHANGED = 2;
\r
53 private static final int MESSAGE_RECEIVED = 3;
\r
54 private static final int SYNCINFO_RECEIVED = 4;
\r
55 private static final int TOPICS_RECEIVED = 5;
\r
57 public static Handler mHandler = new Handler()
\r
60 public void handleMessage(Message msg)
\r
64 case PROVIDER_DISCOVERED:
\r
66 String providerId = (String) msg.obj;
\r
67 if (providerId != null)
\r
69 TvLog.append( providerId + "\n");
\r
75 String state = (String) msg.obj;
\r
78 TvLog.append( state + "\n");
\r
82 case MESSAGE_RECEIVED:
\r
84 String message = (String) msg.obj;
\r
85 if (message != null)
\r
87 TvLog.append( message + "\n");
\r
91 case SYNCINFO_RECEIVED:
\r
93 String sync = (String) msg.obj;
\r
96 TvLog.append( sync + "\n");
\r
100 case TOPICS_RECEIVED:
\r
102 String topicList = (String) msg.obj;
\r
103 if (topicList != null)
\r
105 TvLog.append( topicList + "\n");
\r
115 public void showToast(final String toast)
\r
117 runOnUiThread(new Runnable()
\r
122 Toast.makeText(getApplicationContext(), toast, Toast.LENGTH_SHORT).show();
\r
128 protected void onCreate(Bundle savedInstanceState)
\r
130 super.onCreate(savedInstanceState);
\r
131 setContentView(R.layout.activity_main);
\r
133 btnStart = (Button) findViewById(R.id.BtnStart);
\r
134 btnStop = (Button) findViewById(R.id.BtnStop);
\r
135 btnRescan = (Button) findViewById(R.id.BtnRescan);
\r
136 btnEnableRemoteService = (Button) findViewById(R.id.BtnEnableRemoteService);
\r
137 btnGetTopicList = (Button) findViewById(R.id.BtnGetTopicList);
\r
138 btnUpdateTopicList = (Button) findViewById(R.id.BtnUpdateTopicList);
\r
139 btnClearLog = (Button) findViewById(R.id.BtnClearLog);
\r
141 TvLog = (TextView) findViewById(R.id.TvLog);
\r
143 btnStart.setOnClickListener(mClickListener);
\r
144 btnStop.setOnClickListener(mClickListener);
\r
145 btnRescan.setOnClickListener(mClickListener);
\r
146 btnEnableRemoteService.setOnClickListener(mClickListener);
\r
147 btnGetTopicList.setOnClickListener(mClickListener);
\r
148 btnUpdateTopicList.setOnClickListener(mClickListener);
\r
149 btnClearLog.setOnClickListener(mClickListener);
\r
151 mConsumerSample = new ConsumerSample(getApplicationContext());
\r
152 mConsumerSample.setHandler(mHandler);
\r
156 protected void onDestroy()
\r
159 mConsumerSample.stopNotificationConsumer();
\r
163 Button.OnClickListener mClickListener = new View.OnClickListener()
\r
165 public void onClick(View v)
\r
169 case R.id.BtnStart:
\r
173 Log.i(TAG, "Start NS Consumer Service");
\r
175 TvLog.setText("Start NS-Consumer\n");
\r
176 mConsumerSample.startNotificationConsumer();
\r
181 Log.e(TAG, "NS Consumer Service has already started");
\r
182 showToast("Error : Service has already started");
\r
191 Log.e(TAG, "Fail to stop service. Service has not been started");
\r
192 showToast("Error : Service has not been started");
\r
195 TvLog.append("Stop NS-Consumer\n");
\r
196 mConsumerSample.stopNotificationConsumer();
\r
200 case R.id.BtnRescan:
\r
204 Log.e(TAG, "Fail to rescan. Service has not been started");
\r
205 showToast("Error : Service has not been started");
\r
208 TvLog.append("Rescan NS-Consumer\n");
\r
209 mConsumerSample.rescanProvider();
\r
212 case R.id.BtnEnableRemoteService:
\r
216 Log.e(TAG, "Fail to Enable RemoteService. Service has not been started");
\r
217 showToast("Error : Service has not been started");
\r
220 TvLog.append("EnableRemoteService NS-Consumer\n");
\r
222 //TODO: Update to read the serverAddress from UI
\r
223 String serverAddress = new String();
\r
224 mConsumerSample.enableRemoteService(serverAddress);
\r
227 case R.id.BtnGetTopicList:
\r
231 Log.e(TAG, "Fail to GetTopicList. Service has not been started");
\r
232 showToast("Error : Service has not been started");
\r
235 TvLog.append("GetTopicList NS-Consumer\n");
\r
236 mConsumerSample.getTopicsList();
\r
239 case R.id.BtnUpdateTopicList:
\r
243 Log.e(TAG, "Fail to UpdateTopicList. Service has not been started");
\r
244 showToast("Error : Service has not been started");
\r
247 if(mConsumerSample.getAcceptor())
\r
249 Log.e(TAG, "Operation Not Allowed. ProviderService Acceptor is not Consumer");
\r
250 showToast("Operation Not Allowed. ProviderService Acceptor is not Consumer");
\r
253 TvLog.append("UpdateTopicList NS-Consumer\n");
\r
255 TopicsList topicList = new TopicsList();
\r
256 topicList.addTopic("OCF_TOPIC1", Topic.TopicState.SUBSCRIBED);
\r
257 topicList.addTopic("OCF_TOPIC2", Topic.TopicState.SUBSCRIBED);
\r
258 topicList.addTopic("OCF_TOPIC3", Topic.TopicState.UNSUBSCRIBED);
\r
260 mConsumerSample.updateTopicList(topicList);
\r
263 case R.id.BtnClearLog:
\r