1 /******************************************************************
3 * Copyright 2015 Samsung Electronics All Rights Reserved.
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 ******************************************************************/
21 package org.iotivity.service.sample.container;
23 import android.content.Context;
24 import android.content.pm.ApplicationInfo;
25 import android.content.pm.PackageManager;
26 import android.os.Message;
28 import android.os.PowerManager;
29 import android.util.Log;
31 import org.iotivity.service.resourcecontainer.RcsBundleInfo;
32 import org.iotivity.service.resourcecontainer.RcsResourceContainer;
34 import java.util.HashMap;
35 import java.util.Iterator;
36 import java.util.List;
39 import dalvik.system.DexFile;
42 * For calling the Resource Container APIs as per user selection on UI and for
45 * It contains all the Resource Container APIs.
47 public class ResourceContainer {
49 private RcsResourceContainer containerInstance;
50 public static String logMessage;
52 private static ResourceContainerActivity resourceContainerActivityInstance;
53 private static Message msg;
54 public static boolean startBundleFlag;
55 private static boolean isStarted = false;
56 public static boolean isInitialized = false;
57 PowerManager pm = null;
58 PowerManager.WakeLock wl = null;
63 public ResourceContainer() {
64 resourceContainerActivityInstance = ResourceContainerActivity
65 .getResourceContainerActivityObj();
66 containerInstance = new RcsResourceContainer(
67 resourceContainerActivityInstance.getApplicationContext());
68 pm = (PowerManager) resourceContainerActivityInstance.getApplicationContext().
69 getSystemService(Context.POWER_SERVICE);
73 public void startContainer(String sdCardPath) {
75 String configFile = sdCardPath + "/ResourceContainerConfig.xml";
76 Log.i("startContainer : config path : ", configFile);
79 wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK,
80 "ResourceContainer sample");
82 containerInstance.startContainer(configFile);
84 logMessage = "Container Started ";
86 ResourceContainerActivity.setMessageLog(logMessage);
87 msg = Message.obtain();
89 resourceContainerActivityInstance.getHandler().sendMessage(msg);
91 msg = Message.obtain();
93 resourceContainerActivityInstance.getHandler().sendMessage(msg);
98 public void stopContainer() {
101 containerInstance.stopContainer();
102 logMessage = "Container stopped";
106 logMessage = "Container not started";
109 ResourceContainerActivity.setMessageLog(logMessage);
110 msg = Message.obtain();
112 resourceContainerActivityInstance.getHandler().sendMessage(msg);
115 // List Bundle Resources
116 public void listDIBundleResources() {
118 List<String> bundleResources = containerInstance
119 .listBundleResources("oic.bundle.discomfortIndexSensor");
120 Iterator<String> it = bundleResources.iterator();
123 if (0 == bundleResources.size()) {
124 logMessage = logMessage + "No resource found in the bundle" + "\n";
126 while (it.hasNext()) {
127 String element = (String) it.next();
128 logMessage = logMessage + element + "\n";
131 ResourceContainerActivity.setMessageLog(logMessage);
132 msg = Message.obtain();
134 resourceContainerActivityInstance.getHandler().sendMessage(msg);
138 public void listBundles() {
140 List<RcsBundleInfo> bundleList = containerInstance.listBundles();
141 Iterator<RcsBundleInfo> it = bundleList.iterator();
144 logMessage = logMessage + "size of bundleList : " + bundleList.size()
147 while (it.hasNext()) {
149 RcsBundleInfo object = (RcsBundleInfo) it.next();
150 logMessage += "Bundle : " + i + " -: \n";
151 logMessage += "ID : " + object.getID() + "\n";
152 logMessage += "Lib Path: " + object.getPath() + "\n";
153 if (!(object.getVersion().equalsIgnoreCase("")))
154 logMessage += "version : " + object.getVersion() + "\n\n";
158 ResourceContainerActivity.setMessageLog(logMessage);
159 msg = Message.obtain();
161 resourceContainerActivityInstance.getHandler().sendMessage(msg);
165 public void addBMIBundle() {
166 Map<String, String> bundleParams = null;
167 List<RcsBundleInfo> bundleList = containerInstance.listBundles();
168 if (1 < bundleList.size()) {
169 logMessage = "Bundle already added" + "\n";
172 for (int i = 0; i < 2; i++) {
175 "oic.bundle.BMISensor",
177 "data/data/org.iotivity.service.sample.server/files/libBMISensorBundle.so",
178 "bmisensor", bundleParams);
181 logMessage = "bundle to add : " + "\n";
182 logMessage = logMessage + "ID :" + "oic.bundle.BMISensor" + "\n";
183 logMessage = logMessage + "Uri: " + "xyz" + "\n";
184 logMessage = logMessage
186 + "data/data/org.iotivity.service.sample.server/files/libBMISensorBundle.so"
188 logMessage = logMessage + "bundle added successfully" + "\n";
191 ResourceContainerActivity.setMessageLog(logMessage);
192 msg = Message.obtain();
194 resourceContainerActivityInstance.getHandler().sendMessage(msg);
198 public void removeBMIBundle() {
200 List<RcsBundleInfo> bundleList = containerInstance.listBundles();
201 if (1 == bundleList.size()) {
202 logMessage = "BMI Bundle not added" + "\n";
206 for (int i = 0; i < 2; i++) {
207 containerInstance.removeBundle("oic.bundle.BMISensor");
209 startBundleFlag = false;
210 logMessage = "bundle to remove : " + "\n";
211 logMessage = logMessage + "ID :" + "oic.bundle.BMISensor" + "\n\n";
212 logMessage = logMessage + " bundle removed successfully" + "\n";
214 ResourceContainerActivity.setMessageLog(logMessage);
215 msg = Message.obtain();
217 resourceContainerActivityInstance.getHandler().sendMessage(msg);
221 public void startBMIBundle() {
223 List<RcsBundleInfo> bundleList = containerInstance.listBundles();
224 if (1 == bundleList.size()) {
225 logMessage = "BMI bundle not added" + "\n";
226 } else if (true == startBundleFlag) {
227 logMessage = "Bundle already started" + "\n";
229 startBundleFlag = true;
230 containerInstance.startBundle("oic.bundle.BMISensor");
232 logMessage = " bundle to start" + "\n";
233 logMessage += " ID : oic.bundle.BMISensor" + "\n\n";
234 logMessage += " bundle started successfully" + "\n";
236 ResourceContainerActivity.setMessageLog(logMessage);
237 msg = Message.obtain();
239 resourceContainerActivityInstance.getHandler().sendMessage(msg);
243 public void stopBMIBundle() {
245 if (false == startBundleFlag) {
246 logMessage = "Bundle is not Started" + "\n";
249 List<RcsBundleInfo> bundleList = containerInstance.listBundles();
250 if (0 == bundleList.size()) {
251 logMessage = "No bundle to Stop" + "\n";
254 containerInstance.stopBundle("oic.bundle.BMISensor");
255 startBundleFlag = false;
256 logMessage = " bundle to stop" + "\n";
257 logMessage = logMessage + " ID : oic.bundle.BMISensor" + "\n\n";
258 logMessage = logMessage + " bundle stopped successfully" + "\n";
262 ResourceContainerActivity.setMessageLog(logMessage);
263 msg = Message.obtain();
265 resourceContainerActivityInstance.getHandler().sendMessage(msg);
268 // Add Resource Configuration DI
269 public void addDIResourceConfig() {
271 List<RcsBundleInfo> bundleList = containerInstance.listBundles();
272 List<String> bundleResources = containerInstance
273 .listBundleResources("oic.bundle.discomfortIndexSensor");
275 if (0 == bundleList.size()) {
276 logMessage = "No bundle found" + "\n";
277 } else if ((0 == bundleList.size()) && (0 == bundleResources.size())) {
279 logMessage = "No bundle found" + "\n";
282 Map<String, String> params = new HashMap<String, String>();
283 params.put("resourceType", "oic.r.sensor");
284 params.put("address",
285 "http://192.168.0.2/api/newdeveloper/sensor/22");
286 containerInstance.addResourceConfig(
287 "oic.bundle.discomfortIndexSensor", "", params);
288 logMessage = "resource added successfully" + "\n";
290 ResourceContainerActivity.setMessageLog(logMessage);
291 msg = Message.obtain();
293 resourceContainerActivityInstance.getHandler().sendMessage(msg);
296 // Remove Resource Configuration DI
297 public void removeDIResourceConfig() {
299 List<String> bundleResources = containerInstance
300 .listBundleResources("oic.bundle.discomfortIndexSensor");
301 if (bundleResources.size() >= 1) {
302 String element = bundleResources.get(0);
303 containerInstance.removeResourceConfig(
304 "oic.bundle.discomfortIndexSensor", element);
306 logMessage = "resource removed successfully: \n" + element + "\n";
307 ResourceContainerActivity.setMessageLog(logMessage);
308 msg = Message.obtain();
310 resourceContainerActivityInstance.getHandler().sendMessage(msg);
312 logMessage = "No resource to remove" + "\n";
313 ResourceContainerActivity.setMessageLog(logMessage);
314 msg = Message.obtain();
316 resourceContainerActivityInstance.getHandler().sendMessage(msg);
320 // Add Resource Configuration BMI
321 public void addBMIResourceConfig() {
323 if (false == startBundleFlag) {
324 logMessage = "Bundle is not started" + "\n";
326 List<RcsBundleInfo> bundleList = containerInstance.listBundles();
327 List<String> bundleResources = containerInstance
328 .listBundleResources("oic.bundle.BMISensor");
330 if (0 == bundleList.size()) {
331 logMessage = "No bundle found" + "\n";
332 } else if ((0 == bundleList.size())
333 && (0 == bundleResources.size())) {
335 logMessage = "No bundle found" + "\n";
338 Map<String, String> params = new HashMap<String, String>();
339 params.put("resourceType", "oic.r.sensor");
340 params.put("address",
341 "http://192.168.0.2/api/newdeveloper/sensor/22");
342 containerInstance.addResourceConfig("oic.bundle.BMISensor", "",
344 logMessage = "resource added successfully" + "\n";
347 ResourceContainerActivity.setMessageLog(logMessage);
348 msg = Message.obtain();
350 resourceContainerActivityInstance.getHandler().sendMessage(msg);
353 // Remove Resource Configuration BMI
354 public void removeBMIResourceConfig() {
356 if (false == startBundleFlag) {
357 logMessage = "Bundle is not started" + "\n";
360 List<String> bundleResources = containerInstance
361 .listBundleResources("oic.bundle.BMISensor");
362 if (bundleResources.size() >= 1) {
363 String element = bundleResources.get(0);
364 containerInstance.removeResourceConfig("oic.bundle.BMISensor",
367 logMessage = "resource removed successfully: \n" + element
371 logMessage = "No resource to remove" + "\n";
374 ResourceContainerActivity.setMessageLog(logMessage);
375 msg = Message.obtain();
377 resourceContainerActivityInstance.getHandler().sendMessage(msg);
380 // List Bundle Resources
381 public void listBMIBundleResources() {
383 if (false == startBundleFlag) {
384 logMessage = "Bundle is not started" + "\n";
387 List<String> bundleResources = containerInstance
388 .listBundleResources("oic.bundle.BMISensor");
389 Iterator<String> it = bundleResources.iterator();
392 if (0 == bundleResources.size()) {
393 logMessage = logMessage + "No resource found in the bundle"
396 while (it.hasNext()) {
397 String element = (String) it.next();
398 logMessage = logMessage + element + "\n";
403 ResourceContainerActivity.setMessageLog(logMessage);
404 msg = Message.obtain();
406 resourceContainerActivityInstance.getHandler().sendMessage(msg);
409 public void addAndroidResource(){
410 logMessage = "Add android resource " + "\n";
411 ResourceContainerActivity.setMessageLog(logMessage);
412 msg = Message.obtain();
414 resourceContainerActivityInstance.getHandler().sendMessage(msg);
415 //containerInstance.registerAndroidResource("testBundle", testResource);