Imported Upstream version 0.9.1
[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.Message;
36 import android.support.v4.content.LocalBroadcastManager;
37 import android.util.Log;
38 import android.view.KeyEvent;
39 import android.view.View;
40 import android.view.View.OnClickListener;
41 import android.widget.ScrollView;
42 import android.widget.TextView;
43
44
45
46 public class SampleProvider extends Activity implements OnClickListener,
47     IMessageLogger
48 {
49         private final static String TAG = "SampleProvider : ";
50         private TextView mLogTextView;
51         private TextView mTempValue;
52         private TextView mHumValue;
53         private TemperatureResource mySensor;
54         private boolean isExecutePresence;
55         private ScrollView sv_sclLog;
56         private MessageReceiver mMessageReceiver = new MessageReceiver();
57         /*
58          * To initialize UI Function Setting
59          * To execute initOICStack for running find resource
60          */
61         @Override
62         public void onCreate(Bundle savedInstanceState)
63         {
64
65             super.onCreate(savedInstanceState);
66             setContentView(R.layout.sampleprovider_layout);
67             registerReceiver(mMessageReceiver, new IntentFilter(
68                                  "com.example.sample.provider.SampleProvider"));
69
70             mLogTextView = (TextView) findViewById(R.id.txtLog);
71             mTempValue = (TextView) findViewById(R.id.temperatureValue);
72             mHumValue = (TextView) findViewById(R.id.humidityValue);
73
74             sv_sclLog = (ScrollView)findViewById(R.id.sclLog);
75             sv_sclLog.fullScroll(View.FOCUS_DOWN);
76             findViewById(R.id.btnTemperatureUP).setOnClickListener(this);
77             findViewById(R.id.btnTemperatureDown).setOnClickListener(this);
78             findViewById(R.id.btnHumidityUP).setOnClickListener(this);
79             findViewById(R.id.btnHumidityDown).setOnClickListener(this);
80             findViewById(R.id.btnLogClear).setOnClickListener(this);
81
82             isExecutePresence = false;
83         }
84
85         private void initOICStack()
86         {
87             // create platform config
88             PlatformConfig cfg = new PlatformConfig(this,ServiceType.IN_PROC,
89                                                     ModeType.SERVER, "0.0.0.0", // bind to all available interfaces
90                                                     0, QualityOfService.LOW);
91
92             OcPlatform.Configure(cfg);
93
94             try
95             {
96                 OcPlatform.startPresence(30);
97                 isExecutePresence = true;
98             }
99             catch (OcException e)
100             {
101                 e.printStackTrace();
102             }
103
104             mySensor = new TemperatureResource(this);
105             // create and register a resource
106             mySensor.createResource();
107         }
108         /*
109          * To execute initOICStack for running find resource
110          */
111         @Override
112         protected void onStart()
113         {
114             super.onStart();
115             initOICStack();
116
117         }
118         /*
119          * To execute initOICStack for running find resource
120          */
121         @Override
122         protected void onRestart()
123         {
124             super.onRestart();
125             initOICStack();
126
127         }
128         /*
129          * To terminate presence process and unregister messageHandler(to get message from JNI Function)
130          */
131         @Override
132         protected void onDestroy()
133         {
134             super.onDestroy();
135
136             try
137             {
138                 mySensor.destroyResource();
139
140                 if (isExecutePresence == true)
141                 {
142                     OcPlatform.stopPresence();
143                     isExecutePresence = false;
144                 }
145             }
146             catch (OcException e)
147             {
148                 e.printStackTrace();
149             }
150             LocalBroadcastManager.getInstance(this).unregisterReceiver(
151                 mMessageReceiver);
152         }
153
154         public class MessageReceiver extends BroadcastReceiver
155         {
156                 @Override
157                 public void onReceive(Context context, Intent intent)
158                 {
159                     final String message = intent
160                                            .getStringExtra(StringConstants.MESSAGE);
161                     logMessage(message);
162
163                 }
164         }
165
166         public void logMessage(final String text)
167         {
168             runOnUiThread(new Runnable()
169             {
170                 public void run()
171                 {
172                     final Message msg = new Message();
173                     msg.obj = text;
174                     mLogTextView.append("\n");
175                     mLogTextView.append(text);
176                 }
177             });
178             Log.i(TAG, text);
179         }
180         /*
181          * To terminate presence process and unregister messagehandler(to get message from JNI Function)
182          */
183         @Override
184         protected void onStop()
185         {
186             super.onStop();
187             try
188             {
189                 mySensor.destroyResource();
190
191                 if (isExecutePresence == true)
192                 {
193                     OcPlatform.stopPresence();
194                     isExecutePresence = false;
195                 }
196
197             }
198             catch (OcException e)
199             {
200
201                 e.printStackTrace();
202             }
203             LocalBroadcastManager.getInstance(this).unregisterReceiver(
204                 mMessageReceiver);
205         }
206
207         @Override
208         public void onClick(View v)
209         {
210             int getId = v.getId();
211
212             switch (getId)
213             {
214                 case R.id.btnTemperatureUP:
215                     logMessage(TAG + "Click temerature up btn");
216                     mySensor.mtemp++;
217                     mySensor.notifyObserver();
218                     break;
219                 case R.id.btnTemperatureDown:
220                     logMessage(TAG + "Click temerature down btn");
221                     mySensor.mtemp--;
222                     mySensor.notifyObserver();
223                     break;
224                 case R.id.btnHumidityUP:
225                     logMessage(TAG + "Click Humidity up btn");
226                     mySensor.mhumidity++;
227                     mySensor.notifyObserver();
228                     break;
229                 case R.id.btnHumidityDown:
230                     logMessage(TAG + "Click Humidity down btn");
231                     mySensor.mhumidity--;
232                     mySensor.notifyObserver();
233                     break;
234                 case R.id.btnLogClear:
235                     mLogTextView.setText("");
236                     break;
237             }
238
239             mTempValue.setText(String.valueOf(mySensor.getTemp()));
240             mHumValue.setText(String.valueOf(mySensor.getHumidity()));
241
242         }
243         /*
244          * To handle event about back button
245          */
246         @Override
247         public boolean onKeyDown(int keyCode, KeyEvent event)
248         {
249             if (keyCode == KeyEvent.KEYCODE_BACK )
250             {
251                 try
252                 {
253                     mySensor.destroyResource();
254
255                     if (isExecutePresence == true)
256                     {
257                         OcPlatform.stopPresence();
258                         isExecutePresence = false;
259                     }
260                 }
261                 catch (OcException e)
262                 {
263
264                     e.printStackTrace();
265                 }
266                 LocalBroadcastManager.getInstance(this).unregisterReceiver(
267                     mMessageReceiver);
268             }
269             return super.onKeyDown(keyCode, event);
270         }
271 }