diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/AndroidManifest.xml b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/AndroidManifest.xml
index 2b0f926da..9922eac4b 100755
--- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/AndroidManifest.xml
+++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/AndroidManifest.xml
@@ -50,6 +50,12 @@
android:label="@string/app_name" >
+
+
+
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/data/publisher/DataPublisherReceiver.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/data/publisher/DataPublisherReceiver.java
index b09d15a88..4ece0fe95 100755
--- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/data/publisher/DataPublisherReceiver.java
+++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/data/publisher/DataPublisherReceiver.java
@@ -18,16 +18,18 @@ import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.util.Log;
/**
* This creates and AlarmManagerService that triggers the data uploader service with a 30 seconds interval.
*/
public class DataPublisherReceiver extends BroadcastReceiver {
- private static int ALARM_INTERVAL = 30000;
+ private static int ALARM_INTERVAL = 1000;
@Override
public void onReceive(Context context, Intent intent) {
AlarmManager service = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+ Log.i("Data Publisher", "triggered");
Intent i = new Intent(context, DataPublisherService.class);
PendingIntent pending = PendingIntent.getService(context, 0, i, 0);
service.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), ALARM_INTERVAL, pending);
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseScheduleReceiver.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseScheduleReceiver.java
index 41ff9feff..4b76b5cca 100755
--- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseScheduleReceiver.java
+++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseScheduleReceiver.java
@@ -25,7 +25,7 @@ import java.util.Calendar;
* This is a service which triggers to collect
*/
public class SenseScheduleReceiver extends BroadcastReceiver {
- private static final int ALARM_INTERVAL = 5000;
+ private static final int ALARM_INTERVAL = 1000;
@Override
public void onReceive(Context context, Intent intent) {
@@ -35,7 +35,7 @@ public class SenseScheduleReceiver extends BroadcastReceiver {
Calendar cal = Calendar.getInstance();
- cal.add(Calendar.SECOND, 30);
+ cal.add(Calendar.SECOND, 10);
service.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), ALARM_INTERVAL, pending);
}
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseService.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseService.java
index ec62d8f4f..7554f6524 100755
--- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseService.java
+++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/SenseService.java
@@ -56,7 +56,7 @@ public class SenseService extends Service {
SenseDataReceiverManager.registerActivityDataReceiver(this);
SenseDataReceiverManager.registerSmsDataReceiver(this);
SenseDataReceiverManager.registerAppDataReceiver(this);
- SenseDataReceiverManager.registerNetworkDataReceiver(this);
+ SenseDataReceiverManager.registerNetworkDataReader(this);
//service will not be stopped until we manually stop the service
return Service.START_NOT_STICKY;
@@ -70,7 +70,7 @@ public class SenseService extends Service {
SenseDataReceiverManager.unregisterActivityDataReceiver(this);
SenseDataReceiverManager.unregisterSmsDataReceiver(this);
SenseDataReceiverManager.unregisterAppDataReceiver(this);
- SenseDataReceiverManager.unregisterNetworkDataReceiver(this);
+ SenseDataReceiverManager.unregisterNetworkDataReader();
SenseWakeLock.releaseCPUWakeLock();
super.onDestroy();
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryDataReceiver.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryDataReceiver.java
index 794f69b3d..0a971ab61 100755
--- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryDataReceiver.java
+++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryDataReceiver.java
@@ -13,10 +13,15 @@
*/
package org.wso2.carbon.iot.android.sense.event.streams.battery;
+import android.app.AlarmManager;
+import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.os.BatteryManager;
+import android.util.Log;
+import org.wso2.carbon.iot.android.sense.data.publisher.DataPublisherService;
import org.wso2.carbon.iot.android.sense.util.SenseDataHolder;
/**
@@ -24,21 +29,20 @@ import org.wso2.carbon.iot.android.sense.util.SenseDataHolder;
*/
public class BatteryDataReceiver extends BroadcastReceiver {
+ private final long ALARM_INTERVAL = 1000;
/**
- * when the data is retreived then its added to a inmemory map.
+ * When the data is retrieved then its added to a in memory map.
*
- * @param context of the reciever.
- * @param intent of the reciver
+ * @param context of the receiver.
+ * @param intent of the receiver
*/
@Override
public void onReceive(Context context, Intent intent) {
- if (Intent.ACTION_BATTERY_OKAY.equals(intent.getAction())) {
- SenseDataHolder.getBatteryDataHolder().add(new BatteryData(BatteryData.State.OK));
- } else if (Intent.ACTION_BATTERY_LOW.equals(intent.getAction())) {
- SenseDataHolder.getBatteryDataHolder().add(new BatteryData(BatteryData.State.LOW));
- } else {
- SenseDataHolder.getBatteryDataHolder().add(new BatteryData(intent));
- }
+ AlarmManager service = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+ Log.i("Battery Data Receiver", "Triggered");
+ Intent i = new Intent(context, BatteryReaderService.class);
+ PendingIntent pending = PendingIntent.getService(context, 0, i, 0);
+ service.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), ALARM_INTERVAL, pending);
}
}
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryReaderService.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryReaderService.java
new file mode 100644
index 000000000..c2ea5db9f
--- /dev/null
+++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/battery/BatteryReaderService.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.wso2.carbon.iot.android.sense.event.streams.battery;
+
+import android.app.IntentService;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.BatteryManager;
+import android.os.IBinder;
+import android.support.annotation.Nullable;
+import android.util.Log;
+
+import org.wso2.carbon.iot.android.sense.util.SenseDataHolder;
+
+public class BatteryReaderService extends IntentService {
+
+ private Context context;
+
+ public BatteryReaderService() {
+ super("BatteryReaderService");
+ }
+
+ @Nullable
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+
+ @Override
+ protected void onHandleIntent(Intent intent) {
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(Intent.ACTION_BATTERY_LOW);
+ intentFilter.addAction(Intent.ACTION_BATTERY_OKAY);
+ intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
+ Intent intent1 = registerReceiver(null, intentFilter);
+
+ Log.i("Battery Data", String.valueOf(intent1.getIntExtra(BatteryManager.EXTRA_LEVEL, 0)));
+ if (Intent.ACTION_BATTERY_OKAY.equals(intent.getAction())) {
+ SenseDataHolder.getBatteryDataHolder().add(new BatteryData(BatteryData.State.OK));
+ } else if (Intent.ACTION_BATTERY_LOW.equals(intent.getAction())) {
+ SenseDataHolder.getBatteryDataHolder().add(new BatteryData(BatteryData.State.LOW));
+ } else {
+ SenseDataHolder.getBatteryDataHolder().add(new BatteryData(intent1));
+ }
+ }
+}
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/data/NetworkData.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/data/NetworkData.java
index 47b32325c..c8fcfac4a 100644
--- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/data/NetworkData.java
+++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/data/NetworkData.java
@@ -23,19 +23,16 @@ import java.util.Date;
public class NetworkData {
//Mobile or Wifi
- private String DATA_TYPE;
+ private String type;
private long dataReceived;
private long dataSent;
private long timeStamp;
- public NetworkData(long received, long sent) {
- this.dataReceived = received;
- this.dataSent = sent;
- this.timeStamp = new Date().getTime();
+ public NetworkData() {
}
public String getDataType() {
- return DATA_TYPE;
+ return type;
}
public long getDataReceived() {
@@ -57,4 +54,16 @@ public class NetworkData {
public long getTimeStamp() {
return timeStamp;
}
+
+ public void setTimeStamp(long timeStamp) {
+ this.timeStamp = timeStamp;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
}
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/data/NetworkDataReader.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/data/NetworkDataReader.java
new file mode 100644
index 000000000..6c3231803
--- /dev/null
+++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/data/NetworkDataReader.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.wso2.carbon.iot.android.sense.event.streams.data;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.net.TrafficStats;
+import android.os.AsyncTask;
+import android.os.Handler;
+import android.util.Log;
+
+import org.wso2.carbon.iot.android.sense.util.SenseDataHolder;
+
+import java.util.Date;
+
+/**
+ * Class to read data sent and received by the device.
+ */
+public class NetworkDataReader extends AsyncTask {
+
+ private NetworkData networkData;
+ private Context context;
+ private Handler mHandler = new Handler();
+ private long mStartRX = 0;
+ private long mStartTX = 0;
+ private final String WIFI = "WIFI";
+ private final String MOBILE = "MOBILE";
+ private String connectionType;
+
+ public NetworkDataReader(Context context) {
+ this.context = context;
+ }
+
+ @Override
+ protected Long doInBackground(Void... voids) {
+
+ ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ networkData = new NetworkData();
+
+ if (getConnectionType(connectivityManager, ConnectivityManager.TYPE_WIFI)) {
+ connectionType = WIFI;
+ } else if (getConnectionType(connectivityManager, ConnectivityManager.TYPE_MOBILE)) {
+ connectionType = MOBILE;
+ }
+
+ mStartRX = TrafficStats.getTotalRxBytes();
+ mStartTX = TrafficStats.getTotalTxBytes();
+ if (mStartRX == TrafficStats.UNSUPPORTED || mStartTX == TrafficStats.UNSUPPORTED) {
+ Log.e("ERROR", "Not connected.");
+ } else {
+ mHandler.postDelayed(mRunnable, 10000);
+ }
+ return null;
+ }
+
+ /**
+ * Collect data sent and received with in 10 second time frames.
+ */
+ private final Runnable mRunnable = new Runnable() {
+ public void run() {
+ long rxBytes = TrafficStats.getTotalRxBytes()- mStartRX;
+ long txBytes = TrafficStats.getTotalTxBytes()- mStartTX;
+ Log.i("Usage: ", String.valueOf(rxBytes) + " " + String.valueOf(txBytes) + " " + System.currentTimeMillis());
+ networkData.setType(connectionType);
+ networkData.setTimeStamp(new Date().getTime());
+ networkData.setDataSent(txBytes);
+ networkData.setDataReceived(rxBytes);
+ SenseDataHolder.getNetworkDataHolder().add(networkData);
+ mHandler.postDelayed(mRunnable, 10000);
+ }
+ };
+
+ /**
+ * Get the type of the connection currently have.
+ */
+ private boolean getConnectionType(ConnectivityManager manager, Integer type) {
+ NetworkInfo networkInfo = manager.getNetworkInfo(type);
+ return networkInfo.isConnected();
+ }
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/data/NetworkDataReceiver.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/data/NetworkDataReceiver.java
deleted file mode 100644
index bcf353ffe..000000000
--- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/event/streams/data/NetworkDataReceiver.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * WSO2 Inc. licenses this file to you under the Apache License,
- * Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.wso2.carbon.iot.android.sense.event.streams.data;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.util.Log;
-
-import org.wso2.carbon.iot.android.sense.util.SenseDataHolder;
-
-public class NetworkDataReceiver extends BroadcastReceiver{
-
- @Override
- public void onReceive(Context context, Intent intent) {
- long sent = android.net.TrafficStats.getTotalTxBytes();
- long received = android.net.TrafficStats.getTotalRxBytes();
- Log.d("NetworkData :", "Received: " + sent + " Received : " + received);
-
- NetworkData networkData = new NetworkData(received, sent);
-
- SenseDataHolder.getNetworkDataHolder().add(networkData);
-
- }
-
-}
diff --git a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseClientAsyncExecutor.java b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseClientAsyncExecutor.java
index 6514fbb51..8a31fdf9c 100755
--- a/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseClientAsyncExecutor.java
+++ b/components/device-types/androidsense-plugin/org.wso2.carbon.device.mgt.iot.androidsense.agent/app/src/main/java/org/wso2/carbon/iot/android/sense/util/SenseClientAsyncExecutor.java
@@ -56,6 +56,7 @@ public class SenseClientAsyncExecutor extends AsyncTask