Imported Upstream version 0.9.2
[platform/upstream/iotivity.git] / service / notification-manager / SampleApp / android / SampleProviderApp / src / com / example / sample / provider / SampleProvider.java
1 //******************************************************************
2 //
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20 package com.example.sample.provider;
21
22 import org.iotivity.base.ModeType;
23 import org.iotivity.base.OcException;
24 import org.iotivity.base.OcPlatform;
25 import org.iotivity.base.PlatformConfig;
26 import org.iotivity.base.QualityOfService;
27 import org.iotivity.base.ServiceType;
28
29 import android.app.Activity;
30 import android.content.BroadcastReceiver;
31 import android.content.Context;
32 import android.content.Intent;
33 import android.content.IntentFilter;
34 import android.os.Bundle;
35 import android.os.Handler;
36 import android.os.Message;
37 import android.support.v4.content.LocalBroadcastManager;
38 import android.util.Log;
39 import android.view.KeyEvent;
40 import android.view.View;
41 import android.view.View.OnClickListener;
42 import android.widget.ScrollView;
43 import android.widget.TextView;
44
45
46
47 public class SampleProvider extends Activity implements OnClickListener,
48     IMessageLogger
49 {
50         private final static String TAG = "NMProvider : SampleProvider";
51         private TextView mLogTextView;
52         private TextView mTempValue;
53         private TextView mHumValue;
54         private TemperatureResource mySensor;
55         private boolean isExecutePresence;
56         private ScrollView sv_sclLog;
57         private MessageReceiver mMessageReceiver = new MessageReceiver();
58         private Handler mHandler;
59         private static String message;
60         private static SampleProvider  sampleProviderObj;
61         private String temp;
62         private String hum;
63
64         /*
65          * To initialize UI Function Setting
66          * To execute initOICStack for running find resource
67          */
68         @Override
69         public void onCreate(Bundle savedInstanceState)
70         {
71
72             sampleProviderObj = this;
73             super.onCreate(savedInstanceState);
74             setContentView(R.layout.sampleprovider_layout);
75             registerReceiver(mMessageReceiver, new IntentFilter(
76                                  "com.example.sample.provider.SampleProvider"));
77
78             mLogTextView = (TextView) findViewById(R.id.txtLog);
79             mTempValue = (TextView) findViewById(R.id.temperatureValue);
80             mHumValue = (TextView) findViewById(R.id.humidityValue);
81
82             sv_sclLog = (ScrollView)findViewById(R.id.sclLog);
83             sv_sclLog.fullScroll(View.FOCUS_DOWN);
84             findViewById(R.id.btnTemperatureUP).setOnClickListener(this);
85             findViewById(R.id.btnTemperatureDown).setOnClickListener(this);
86             findViewById(R.id.btnHumidityUP).setOnClickListener(this);
87             findViewById(R.id.btnHumidityDown).setOnClickListener(this);
88             findViewById(R.id.btnLogClear).setOnClickListener(this);
89
90             isExecutePresence = false;
91             mHandler = new Handler() {
92                 @Override
93                 public void handleMessage(Message msg) {
94                     switch (msg.what) {
95                         case 0:
96                             String[] tempHum = message.split(":");
97                             mTempValue.setText(tempHum[0]);
98                             mHumValue.setText(tempHum[1]);
99                     }
100                 }
101             };
102             setmHandler(mHandler);
103         }
104
105         private void initOICStack()
106         {
107             // create platform config
108             PlatformConfig cfg = new PlatformConfig(this,ServiceType.IN_PROC,
109                                                     ModeType.SERVER, "0.0.0.0", // bind to all available interfaces
110                                                     0, QualityOfService.LOW);
111
112             OcPlatform.Configure(cfg);
113
114             try
115             {
116                 OcPlatform.startPresence(30);
117                 isExecutePresence = true;
118             }
119             catch (OcException e)
120             {
121                 e.printStackTrace();
122             }
123
124             mySensor = new TemperatureResource(this);
125             // create and register a resource
126             mySensor.createResource();
127         }
128         /*
129          * To execute initOICStack for running find resource
130          */
131         @Override
132         protected void onStart()
133         {
134             super.onStart();
135             initOICStack();
136
137         }
138         /*
139          * To execute initOICStack for running find resource
140          */
141         @Override
142         protected void onRestart()
143         {
144             super.onRestart();
145             initOICStack();
146
147         }
148         /*
149          * To terminate presence process and unregister messageHandler(to get message from JNI Function)
150          */
151         @Override
152         protected void onDestroy()
153         {
154             super.onDestroy();
155
156             try
157             {
158                 mySensor.destroyResource();
159
160                 if (isExecutePresence == true)
161                 {
162                     OcPlatform.stopPresence();
163                     isExecutePresence = false;
164                 }
165             }
166             catch (OcException e)
167             {
168                 e.printStackTrace();
169             }
170             LocalBroadcastManager.getInstance(this).unregisterReceiver(
171                 mMessageReceiver);
172         }
173
174         public class MessageReceiver extends BroadcastReceiver
175         {
176                 @Override
177                 public void onReceive(Context context, Intent intent)
178                 {
179                     final String message = intent
180                                            .getStringExtra(StringConstants.MESSAGE);
181                     logMessage(message);
182
183                 }
184         }
185
186         public void logMessage(final String text)
187         {
188             runOnUiThread(new Runnable()
189             {
190                 public void run()
191                 {
192                     final Message msg = new Message();
193                     msg.obj = text;
194                     mLogTextView.append("\n");
195                     mLogTextView.append(text);
196                 }
197             });
198             Log.i(TAG, text);
199         }
200         /*
201          * To terminate presence process and unregister messagehandler(to get message from JNI Function)
202          */
203         @Override
204         protected void onStop()
205         {
206             super.onStop();
207             try
208             {
209                 mySensor.destroyResource();
210
211                 if (isExecutePresence == true)
212                 {
213                     OcPlatform.stopPresence();
214                     isExecutePresence = false;
215                 }
216
217             }
218             catch (OcException e)
219             {
220
221                 e.printStackTrace();
222             }
223             LocalBroadcastManager.getInstance(this).unregisterReceiver(
224                 mMessageReceiver);
225         }
226
227         @Override
228         public void onClick(View v)
229         {
230             int getId = v.getId();
231
232             switch (getId)
233             {
234                 case R.id.btnTemperatureUP:
235                     logMessage(TAG + "Click temerature up btn");
236                     mySensor.mtemp++;
237                     mySensor.notifyObserver();
238                     break;
239                 case R.id.btnTemperatureDown:
240                     logMessage(TAG + "Click temerature down btn");
241                     mySensor.mtemp--;
242                     mySensor.notifyObserver();
243                     break;
244                 case R.id.btnHumidityUP:
245                     logMessage(TAG + "Click Humidity up btn");
246                     mySensor.mhumidity++;
247                     mySensor.notifyObserver();
248                     break;
249                 case R.id.btnHumidityDown:
250                     logMessage(TAG + "Click Humidity down btn");
251                     mySensor.mhumidity--;
252                     mySensor.notifyObserver();
253                     break;
254                 case R.id.btnLogClear:
255                     mLogTextView.setText("");
256                     Log.i(TAG, "Log message cleared");
257                     break;
258             }
259
260             mTempValue.setText(String.valueOf(mySensor.getTemp()));
261             mHumValue.setText(String.valueOf(mySensor.getHumidity()));
262
263         }
264         /*
265          * To handle event about back button
266          */
267         @Override
268         public boolean onKeyDown(int keyCode, KeyEvent event)
269         {
270             if (keyCode == KeyEvent.KEYCODE_BACK )
271             {
272                 try
273                 {
274                     mySensor.destroyResource();
275
276                     if (isExecutePresence == true)
277                     {
278                         OcPlatform.stopPresence();
279                         isExecutePresence = false;
280                     }
281                 }
282                 catch (OcException e)
283                 {
284
285                     e.printStackTrace();
286                 }
287                 LocalBroadcastManager.getInstance(this).unregisterReceiver(
288                     mMessageReceiver);
289             }
290             return super.onKeyDown(keyCode, event);
291         }
292
293         public Handler getmHandler() {
294             return mHandler;
295         }
296
297         public void setmHandler(Handler mHandler) {
298             this.mHandler = mHandler;
299         }
300
301         public static SampleProvider getSampleProviderObject() {
302             return sampleProviderObj;
303         }
304
305         public static void setmessage(String msg) {
306             message = msg;
307         }
308 }