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.app.NotificationManager;
\r
22 import android.content.Context;
\r
23 import android.os.Handler;
\r
24 import android.os.Message;
\r
25 import android.util.Log;
\r
26 import android.widget.Toast;
\r
28 import org.iotivity.base.ModeType;
\r
29 import org.iotivity.base.OcPlatform;
\r
30 import org.iotivity.base.OcResourceHandle;
\r
31 import org.iotivity.base.PlatformConfig;
\r
32 import org.iotivity.base.QualityOfService;
\r
33 import org.iotivity.base.ServiceType;
\r
34 import org.iotivity.service.ns.common.SyncInfo;
\r
35 import org.iotivity.service.ns.consumer.ConsumerService;
\r
36 import org.iotivity.service.ns.consumer.Provider;
\r
38 import java.util.HashMap;
\r
40 public class ConsumerProxy
\r
41 implements ConsumerService.OnProviderDiscoveredListner,
\r
42 ConsumerService.OnProviderChangedListener,
\r
43 Provider.OnMessageReceivedListner, Provider.OnSyncInfoReceivedListner
\r
46 private static final String TAG = "NS_CONSUMER_PROXY";
\r
48 private Context mContext = null;
\r
49 private ConsumerService consumerService = null;
\r
51 private Handler mHandler = null;
\r
53 private static final int PROVIDER_DISCOVERED = 1;
\r
54 private static final int SUBSCRIPTION_ACCEPTED = 2;
\r
55 private static final int MESSAGE_RECEIVED = 3;
\r
56 private static final int SYNCINFO_RECEIVED = 4;
\r
58 public ConsumerProxy(Context context)
\r
60 Log.i(TAG, "Create consumerProxy Instance");
\r
62 this.mContext = context;
\r
63 consumerService = new ConsumerService();
\r
66 public void setHandler(Handler handler)
\r
68 this.mHandler = handler;
\r
71 private void configurePlatform()
\r
74 PlatformConfig platformConfig = new PlatformConfig(
\r
76 ServiceType.IN_PROC,
\r
77 ModeType.CLIENT_SERVER,
\r
78 "0.0.0.0", // By setting to "0.0.0.0", it binds to all available interfaces
\r
79 0, // Uses randomly available port
\r
80 QualityOfService.LOW
\r
83 Log.i(TAG, "Configuring platform.");
\r
84 OcPlatform.Configure(platformConfig);
\r
87 OcPlatform.stopPresence(); // Initialize OcPlatform
\r
91 Log.e(TAG, "Exception: stopping presence when configuration step: " + e);
\r
93 Log.i(TAG, "Configuration done Successfully");
\r
96 public void startNotificationConsumer()
\r
98 configurePlatform();
\r
101 consumerService.Start(this, this);
\r
103 catch (Exception e)
\r
105 Log.e(TAG, "Exception: startNotificationConsumer : " + e);
\r
109 public void stopNotificationConsumer()
\r
113 consumerService.Stop();
\r
115 catch (Exception e)
\r
117 Log.e(TAG, "Exception: stopNotificationConsumer : " + e);
\r
121 public void enableRemoteService(String serverAddress)
\r
125 consumerService.EnableRemoteService(serverAddress);
\r
127 catch (Exception e)
\r
129 Log.e(TAG, "Exception: enableRemoteService : " + e);
\r
133 public void rescanProvider()
\r
137 consumerService.RescanProvider();
\r
139 catch (Exception e)
\r
141 Log.e(TAG, "Exception: rescanProvider : " + e);
\r
145 public Provider getProvider(String providerId)
\r
147 Provider provider = null;
\r
150 provider = consumerService.GetProvider(providerId);
\r
152 catch (Exception e)
\r
154 Log.e(TAG, "Exception: getProvider : " + e);
\r
159 public void subscribe(String providerId)
\r
163 Provider provider = getProvider(providerId);
\r
164 if (provider != null)
\r
165 provider.Subscribe();
\r
167 Log.e(TAG, "providerID is Null : ");
\r
169 catch (Exception e)
\r
171 Log.e(TAG, "Exception: Subscribe : " + e);
\r
175 public void unsubscribe(String providerId)
\r
179 Provider provider = getProvider(providerId);
\r
180 if (provider != null)
\r
181 provider.Unsubscribe();
\r
183 Log.e(TAG, "providerID is Null : ");
\r
185 catch (Exception e)
\r
187 Log.e(TAG, "Exception: Unsubscribe : " + e);
\r
191 public void sendSyncInfo(String providerId, long messageId, SyncInfo.SyncType syncType)
\r
195 Provider provider = getProvider(providerId);
\r
196 if (provider != null)
\r
197 provider.SendSyncInfo(messageId, syncType);
\r
199 Log.e(TAG, "providerID is Null : ");
\r
201 catch (Exception e)
\r
203 Log.e(TAG, "Exception: SendSyncInfo : " + e);
\r
207 public void setListener(String providerId)
\r
211 Provider provider = getProvider(providerId);
\r
212 if (provider != null)
\r
213 provider.SetListener(this, this);
\r
215 Log.e(TAG, "providerID is Null : ");
\r
217 catch (Exception e)
\r
219 Log.e(TAG, "Exception: SetListener : " + e);
\r
224 public void onProviderDiscovered(Provider provider)
\r
226 Log.i(TAG, "onProviderDiscovered");
\r
228 Log.i(TAG, "Provider ID: " + provider.getProviderId() );
\r
229 Message msg = mHandler.obtainMessage(PROVIDER_DISCOVERED, provider.getProviderId());
\r
230 mHandler.sendMessage(msg);
\r
231 subscribe(provider.getProviderId());
\r
235 public void onProviderChanged(Provider provider , ConsumerService.Response response)
\r
237 Log.i(TAG, "onSubscriptionAccepted");
\r
239 Log.i(TAG, "Provider ID: " + provider.getProviderId() );
\r
240 Message msg = mHandler.obtainMessage(SUBSCRIPTION_ACCEPTED, provider.getProviderId());
\r
241 mHandler.sendMessage(msg);
\r
242 setListener(provider.getProviderId());
\r
246 public void onMessageReceived(org.iotivity.service.ns.common.Message message)
\r
248 Log.i(TAG, "onMessageReceived");
\r
250 Log.i(TAG, "Message Id: " + message.getMessageId());
\r
251 Log.i(TAG, "Message title: " + message.getTitle());
\r
252 Log.i(TAG, "Message Content: " + message.getContentText());
\r
253 Log.i(TAG, "Message Source: " + message.getSourceName());
\r
255 Message msg = mHandler.obtainMessage(MESSAGE_RECEIVED,
\r
256 "Message Id: " + message.getMessageId() +
\r
257 " / Message title: " + message.getTitle() +
\r
258 " / Message Content: " + message.getContentText() +
\r
259 " / Message Source: " + message.getSourceName() );
\r
260 mHandler.sendMessage(msg);
\r
264 public void onSyncInfoReceived(SyncInfo sync)
\r
266 Log.i(TAG, "onSyncInfoReceived");
\r
268 Log.i(TAG, "Sync Id: " + sync.getMessageId());
\r
269 Log.i(TAG, "Sync STATE: " + sync.getState());
\r
270 Message msg = mHandler.obtainMessage(SYNCINFO_RECEIVED,
\r
271 "Sync Id: " + sync.getMessageId() +
\r
272 " / Sync STATE: " + sync.getState());
\r
273 mHandler.sendMessage(msg);
\r