1 //******************************************************************
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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
11 // http://www.apache.org/licenses/LICENSE-2.0
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.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20 package com.example.sample.provider;
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;
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;
46 public class SampleProvider extends Activity implements OnClickListener,
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();
58 * To initialize UI Function Setting
59 * To execute initOICStack for running find resource
62 public void onCreate(Bundle savedInstanceState)
65 super.onCreate(savedInstanceState);
66 setContentView(R.layout.sampleprovider_layout);
67 registerReceiver(mMessageReceiver, new IntentFilter(
68 "com.example.sample.provider.SampleProvider"));
70 mLogTextView = (TextView) findViewById(R.id.txtLog);
71 mTempValue = (TextView) findViewById(R.id.temperatureValue);
72 mHumValue = (TextView) findViewById(R.id.humidityValue);
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);
82 isExecutePresence = false;
85 private void initOICStack()
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);
92 OcPlatform.Configure(cfg);
96 OcPlatform.startPresence(30);
97 isExecutePresence = true;
104 mySensor = new TemperatureResource(this);
105 // create and register a resource
106 mySensor.createResource();
109 * To execute initOICStack for running find resource
112 protected void onStart()
119 * To execute initOICStack for running find resource
122 protected void onRestart()
129 * To terminate presence process and unregister messageHandler(to get message from JNI Function)
132 protected void onDestroy()
138 mySensor.destroyResource();
140 if (isExecutePresence == true)
142 OcPlatform.stopPresence();
143 isExecutePresence = false;
146 catch (OcException e)
150 LocalBroadcastManager.getInstance(this).unregisterReceiver(
154 public class MessageReceiver extends BroadcastReceiver
157 public void onReceive(Context context, Intent intent)
159 final String message = intent
160 .getStringExtra(StringConstants.MESSAGE);
166 public void logMessage(final String text)
168 runOnUiThread(new Runnable()
172 final Message msg = new Message();
174 mLogTextView.append("\n");
175 mLogTextView.append(text);
181 * To terminate presence process and unregister messagehandler(to get message from JNI Function)
184 protected void onStop()
189 mySensor.destroyResource();
191 if (isExecutePresence == true)
193 OcPlatform.stopPresence();
194 isExecutePresence = false;
198 catch (OcException e)
203 LocalBroadcastManager.getInstance(this).unregisterReceiver(
208 public void onClick(View v)
210 int getId = v.getId();
214 case R.id.btnTemperatureUP:
215 logMessage(TAG + "Click temerature up btn");
217 mySensor.notifyObserver();
219 case R.id.btnTemperatureDown:
220 logMessage(TAG + "Click temerature down btn");
222 mySensor.notifyObserver();
224 case R.id.btnHumidityUP:
225 logMessage(TAG + "Click Humidity up btn");
226 mySensor.mhumidity++;
227 mySensor.notifyObserver();
229 case R.id.btnHumidityDown:
230 logMessage(TAG + "Click Humidity down btn");
231 mySensor.mhumidity--;
232 mySensor.notifyObserver();
234 case R.id.btnLogClear:
235 mLogTextView.setText("");
239 mTempValue.setText(String.valueOf(mySensor.getTemp()));
240 mHumValue.setText(String.valueOf(mySensor.getHumidity()));
244 * To handle event about back button
247 public boolean onKeyDown(int keyCode, KeyEvent event)
249 if (keyCode == KeyEvent.KEYCODE_BACK )
253 mySensor.destroyResource();
255 if (isExecutePresence == true)
257 OcPlatform.stopPresence();
258 isExecutePresence = false;
261 catch (OcException e)
266 LocalBroadcastManager.getInstance(this).unregisterReceiver(
269 return super.onKeyDown(keyCode, event);