diff --git a/SensorManagement/AndroidManifest.xml b/SensorManagement/AndroidManifest.xml
new file mode 100644
index 00000000..c6f27b2a
--- /dev/null
+++ b/SensorManagement/AndroidManifest.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SensorManagement/bin/AndroidManifest.xml b/SensorManagement/bin/AndroidManifest.xml
new file mode 100644
index 00000000..c6f27b2a
--- /dev/null
+++ b/SensorManagement/bin/AndroidManifest.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SensorManagement/bin/SensorManagement.apk b/SensorManagement/bin/SensorManagement.apk
new file mode 100644
index 00000000..808f35bc
Binary files /dev/null and b/SensorManagement/bin/SensorManagement.apk differ
diff --git a/SensorManagement/bin/classes.dex b/SensorManagement/bin/classes.dex
new file mode 100644
index 00000000..5acbbffb
Binary files /dev/null and b/SensorManagement/bin/classes.dex differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/BuildConfig.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/BuildConfig.class
new file mode 100644
index 00000000..1c9fa413
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/BuildConfig.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/MainActivity$1.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/MainActivity$1.class
new file mode 100644
index 00000000..2f1ecd4d
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/MainActivity$1.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/MainActivity.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/MainActivity.class
new file mode 100644
index 00000000..f10f8fe7
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/MainActivity.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/R$attr.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$attr.class
new file mode 100644
index 00000000..b1cae3a4
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$attr.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/R$dimen.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$dimen.class
new file mode 100644
index 00000000..47f1994d
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$dimen.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/R$drawable.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$drawable.class
new file mode 100644
index 00000000..99a22f52
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$drawable.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/R$id.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$id.class
new file mode 100644
index 00000000..04bbde16
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$id.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/R$layout.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$layout.class
new file mode 100644
index 00000000..885ffc4a
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$layout.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/R$menu.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$menu.class
new file mode 100644
index 00000000..87558dc3
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$menu.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/R$string.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$string.class
new file mode 100644
index 00000000..6d2b3334
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$string.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/R$style.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$style.class
new file mode 100644
index 00000000..2de04759
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/R$style.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/R.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/R.class
new file mode 100644
index 00000000..c9f91d45
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/R.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorActivity$1.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorActivity$1.class
new file mode 100644
index 00000000..f5c01f30
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorActivity$1.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorActivity.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorActivity.class
new file mode 100644
index 00000000..169d3a58
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorActivity.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorDataGraphActivity$APRIndexFormat.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorDataGraphActivity$APRIndexFormat.class
new file mode 100644
index 00000000..f423ade5
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorDataGraphActivity$APRIndexFormat.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorDataGraphActivity.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorDataGraphActivity.class
new file mode 100644
index 00000000..7ec66a55
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/SensorDataGraphActivity.class differ
diff --git a/SensorManagement/bin/classes/com/navneet/sensormanagement/ViewSensorDataActivity.class b/SensorManagement/bin/classes/com/navneet/sensormanagement/ViewSensorDataActivity.class
new file mode 100644
index 00000000..a3b6848e
Binary files /dev/null and b/SensorManagement/bin/classes/com/navneet/sensormanagement/ViewSensorDataActivity.class differ
diff --git a/SensorManagement/bin/dexedLibs/android-support-v4-ff164065e86b1c4a8628094c0a049af4.jar b/SensorManagement/bin/dexedLibs/android-support-v4-ff164065e86b1c4a8628094c0a049af4.jar
new file mode 100644
index 00000000..92782396
Binary files /dev/null and b/SensorManagement/bin/dexedLibs/android-support-v4-ff164065e86b1c4a8628094c0a049af4.jar differ
diff --git a/SensorManagement/bin/dexedLibs/androidplot-core-0.6.1-7afa7b6a60421ae20965752cb0e6eff0.jar b/SensorManagement/bin/dexedLibs/androidplot-core-0.6.1-7afa7b6a60421ae20965752cb0e6eff0.jar
new file mode 100644
index 00000000..f44bbbcf
Binary files /dev/null and b/SensorManagement/bin/dexedLibs/androidplot-core-0.6.1-7afa7b6a60421ae20965752cb0e6eff0.jar differ
diff --git a/SensorManagement/bin/res/crunch/drawable-hdpi/ic_launcher.png b/SensorManagement/bin/res/crunch/drawable-hdpi/ic_launcher.png
new file mode 100644
index 00000000..bcfa0581
Binary files /dev/null and b/SensorManagement/bin/res/crunch/drawable-hdpi/ic_launcher.png differ
diff --git a/SensorManagement/bin/res/crunch/drawable-mdpi/ic_launcher.png b/SensorManagement/bin/res/crunch/drawable-mdpi/ic_launcher.png
new file mode 100644
index 00000000..85848ff4
Binary files /dev/null and b/SensorManagement/bin/res/crunch/drawable-mdpi/ic_launcher.png differ
diff --git a/SensorManagement/bin/res/crunch/drawable-xhdpi/ic_launcher.png b/SensorManagement/bin/res/crunch/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..916901e9
Binary files /dev/null and b/SensorManagement/bin/res/crunch/drawable-xhdpi/ic_launcher.png differ
diff --git a/SensorManagement/bin/resources.ap_ b/SensorManagement/bin/resources.ap_
new file mode 100644
index 00000000..e795972a
Binary files /dev/null and b/SensorManagement/bin/resources.ap_ differ
diff --git a/SensorManagement/gen/com/navneet/sensormanagement/BuildConfig.java b/SensorManagement/gen/com/navneet/sensormanagement/BuildConfig.java
new file mode 100644
index 00000000..5f3c8414
--- /dev/null
+++ b/SensorManagement/gen/com/navneet/sensormanagement/BuildConfig.java
@@ -0,0 +1,6 @@
+/** Automatically generated file. DO NOT MODIFY */
+package com.navneet.sensormanagement;
+
+public final class BuildConfig {
+ public final static boolean DEBUG = true;
+}
\ No newline at end of file
diff --git a/SensorManagement/gen/com/navneet/sensormanagement/R.java b/SensorManagement/gen/com/navneet/sensormanagement/R.java
new file mode 100644
index 00000000..48e81953
--- /dev/null
+++ b/SensorManagement/gen/com/navneet/sensormanagement/R.java
@@ -0,0 +1,91 @@
+/* AUTO-GENERATED FILE. DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found. It
+ * should not be modified by hand.
+ */
+
+package com.navneet.sensormanagement;
+
+public final class R {
+ public static final class attr {
+ }
+ public static final class dimen {
+ /** Default screen margins, per the Android Design guidelines.
+
+ Example customization of dimensions originally defined in res/values/dimens.xml
+ (such as screen margins) for screens with more than 820dp of available width. This
+ would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
+
+ */
+ public static final int activity_horizontal_margin=0x7f040000;
+ public static final int activity_vertical_margin=0x7f040001;
+ }
+ public static final class drawable {
+ public static final int ic_launcher=0x7f020000;
+ }
+ public static final class id {
+ public static final int accelerometerPlot=0x7f080003;
+ public static final int action_settings=0x7f080007;
+ public static final int sensorButton=0x7f080000;
+ public static final int sensorInformation1=0x7f080004;
+ public static final int sensorInformation2=0x7f080006;
+ public static final int sensorInformation3=0x7f080005;
+ public static final int sensorsList=0x7f080002;
+ public static final int textView1=0x7f080001;
+ }
+ public static final class layout {
+ public static final int activity_main=0x7f030000;
+ public static final int activity_sensor=0x7f030001;
+ public static final int activity_sensor_2=0x7f030002;
+ public static final int activity_sensor_data_graph=0x7f030003;
+ public static final int activity_view_sensor_data=0x7f030004;
+ }
+ public static final class menu {
+ public static final int main=0x7f070000;
+ public static final int sensor=0x7f070001;
+ public static final int sensor_data_graph=0x7f070002;
+ public static final int view_sensor_data=0x7f070003;
+ }
+ public static final class string {
+ public static final int action_settings=0x7f050002;
+ public static final int app_name=0x7f050000;
+ public static final int click_text=0x7f050009;
+ public static final int graph_data_text=0x7f050008;
+ public static final int hello_world=0x7f050001;
+ public static final int no_information_text=0x7f050006;
+ public static final int sensor_available_text=0x7f05000a;
+ public static final int sensor_button_text=0x7f050003;
+ public static final int title_activity_sensor=0x7f050004;
+ public static final int title_activity_sensor_data_graph=0x7f050007;
+ public static final int title_activity_view_sensor_data=0x7f050005;
+ }
+ public static final class style {
+ /**
+ Base application theme, dependent on API level. This theme is replaced
+ by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+
+
+ Theme customizations available in newer API levels can go in
+ res/values-vXX/styles.xml, while customizations related to
+ backward-compatibility can go here.
+
+
+ Base application theme for API 11+. This theme completely replaces
+ AppBaseTheme from res/values/styles.xml on API 11+ devices.
+
+ API 11 theme customizations can go here.
+
+ Base application theme for API 14+. This theme completely replaces
+ AppBaseTheme from BOTH res/values/styles.xml and
+ res/values-v11/styles.xml on API 14+ devices.
+
+ API 14 theme customizations can go here.
+ */
+ public static final int AppBaseTheme=0x7f060000;
+ /** Application theme.
+ All customizations that are NOT specific to a particular API-level can go here.
+ */
+ public static final int AppTheme=0x7f060001;
+ }
+}
diff --git a/SensorManagement/libs/android-support-v4.jar b/SensorManagement/libs/android-support-v4.jar
new file mode 100644
index 00000000..c31cede4
Binary files /dev/null and b/SensorManagement/libs/android-support-v4.jar differ
diff --git a/SensorManagement/libs/androidplot-core-0.6.1.jar b/SensorManagement/libs/androidplot-core-0.6.1.jar
new file mode 100644
index 00000000..cfce44e3
Binary files /dev/null and b/SensorManagement/libs/androidplot-core-0.6.1.jar differ
diff --git a/SensorManagement/proguard-project.txt b/SensorManagement/proguard-project.txt
new file mode 100644
index 00000000..f2fe1559
--- /dev/null
+++ b/SensorManagement/proguard-project.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/SensorManagement/project.properties b/SensorManagement/project.properties
new file mode 100644
index 00000000..4ab12569
--- /dev/null
+++ b/SensorManagement/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
diff --git a/SensorManagement/res/drawable-hdpi/ic_launcher.png b/SensorManagement/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 00000000..96a442e5
Binary files /dev/null and b/SensorManagement/res/drawable-hdpi/ic_launcher.png differ
diff --git a/SensorManagement/res/drawable-mdpi/ic_launcher.png b/SensorManagement/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 00000000..359047df
Binary files /dev/null and b/SensorManagement/res/drawable-mdpi/ic_launcher.png differ
diff --git a/SensorManagement/res/drawable-xhdpi/ic_launcher.png b/SensorManagement/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..71c6d760
Binary files /dev/null and b/SensorManagement/res/drawable-xhdpi/ic_launcher.png differ
diff --git a/SensorManagement/res/layout/activity_main.xml b/SensorManagement/res/layout/activity_main.xml
new file mode 100644
index 00000000..858821a4
--- /dev/null
+++ b/SensorManagement/res/layout/activity_main.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
diff --git a/SensorManagement/res/layout/activity_sensor.xml b/SensorManagement/res/layout/activity_sensor.xml
new file mode 100644
index 00000000..601ac649
--- /dev/null
+++ b/SensorManagement/res/layout/activity_sensor.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/SensorManagement/res/layout/activity_sensor_2.xml b/SensorManagement/res/layout/activity_sensor_2.xml
new file mode 100644
index 00000000..e3e3bd45
--- /dev/null
+++ b/SensorManagement/res/layout/activity_sensor_2.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
diff --git a/SensorManagement/res/layout/activity_sensor_data_graph.xml b/SensorManagement/res/layout/activity_sensor_data_graph.xml
new file mode 100644
index 00000000..ee203485
--- /dev/null
+++ b/SensorManagement/res/layout/activity_sensor_data_graph.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SensorManagement/res/layout/activity_view_sensor_data.xml b/SensorManagement/res/layout/activity_view_sensor_data.xml
new file mode 100644
index 00000000..3e7abf40
--- /dev/null
+++ b/SensorManagement/res/layout/activity_view_sensor_data.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SensorManagement/res/menu/main.xml b/SensorManagement/res/menu/main.xml
new file mode 100644
index 00000000..22e4d3fd
--- /dev/null
+++ b/SensorManagement/res/menu/main.xml
@@ -0,0 +1,5 @@
+
diff --git a/SensorManagement/res/menu/sensor.xml b/SensorManagement/res/menu/sensor.xml
new file mode 100644
index 00000000..8f2251ca
--- /dev/null
+++ b/SensorManagement/res/menu/sensor.xml
@@ -0,0 +1,5 @@
+
diff --git a/SensorManagement/res/menu/sensor_data_graph.xml b/SensorManagement/res/menu/sensor_data_graph.xml
new file mode 100644
index 00000000..292725a1
--- /dev/null
+++ b/SensorManagement/res/menu/sensor_data_graph.xml
@@ -0,0 +1,5 @@
+
diff --git a/SensorManagement/res/menu/view_sensor_data.xml b/SensorManagement/res/menu/view_sensor_data.xml
new file mode 100644
index 00000000..d32de976
--- /dev/null
+++ b/SensorManagement/res/menu/view_sensor_data.xml
@@ -0,0 +1,11 @@
+
diff --git a/SensorManagement/res/values-v11/styles.xml b/SensorManagement/res/values-v11/styles.xml
new file mode 100644
index 00000000..3c02242a
--- /dev/null
+++ b/SensorManagement/res/values-v11/styles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
diff --git a/SensorManagement/res/values-v14/styles.xml b/SensorManagement/res/values-v14/styles.xml
new file mode 100644
index 00000000..a91fd037
--- /dev/null
+++ b/SensorManagement/res/values-v14/styles.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/SensorManagement/res/values-w820dp/dimens.xml b/SensorManagement/res/values-w820dp/dimens.xml
new file mode 100644
index 00000000..f3e70203
--- /dev/null
+++ b/SensorManagement/res/values-w820dp/dimens.xml
@@ -0,0 +1,10 @@
+
+
+
+ 64dp
+
+
diff --git a/SensorManagement/res/values/dimens.xml b/SensorManagement/res/values/dimens.xml
new file mode 100644
index 00000000..55c1e590
--- /dev/null
+++ b/SensorManagement/res/values/dimens.xml
@@ -0,0 +1,7 @@
+
+
+
+ 16dp
+ 16dp
+
+
diff --git a/SensorManagement/res/values/strings.xml b/SensorManagement/res/values/strings.xml
new file mode 100644
index 00000000..65b62c98
--- /dev/null
+++ b/SensorManagement/res/values/strings.xml
@@ -0,0 +1,16 @@
+
+
+
+ Sensor Management
+ Hello world!
+ Settings
+ View All Sensors
+ SensorActivity
+ ViewSensorDataActivity
+ No information
+ SensorDataGraphActivity
+ Graphical View
+ "Sensor Mangement "
+ Sensors On Your Device
+
+
diff --git a/SensorManagement/res/values/styles.xml b/SensorManagement/res/values/styles.xml
new file mode 100644
index 00000000..6ce89c7b
--- /dev/null
+++ b/SensorManagement/res/values/styles.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
diff --git a/SensorManagement/src/com/navneet/sensormanagement/MainActivity.java b/SensorManagement/src/com/navneet/sensormanagement/MainActivity.java
new file mode 100644
index 00000000..f8fa087b
--- /dev/null
+++ b/SensorManagement/src/com/navneet/sensormanagement/MainActivity.java
@@ -0,0 +1,49 @@
+package com.navneet.sensormanagement;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
+
+public class MainActivity extends Activity {
+ protected Button sensorButton;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ sensorButton = (Button) findViewById(R.id.sensorButton);
+ sensorButton.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(MainActivity.this,
+ SensorActivity.class);
+ startActivity(intent);
+
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+ if (id == R.id.action_settings) {
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/SensorManagement/src/com/navneet/sensormanagement/SensorActivity.java b/SensorManagement/src/com/navneet/sensormanagement/SensorActivity.java
new file mode 100644
index 00000000..01a4b6f4
--- /dev/null
+++ b/SensorManagement/src/com/navneet/sensormanagement/SensorActivity.java
@@ -0,0 +1,76 @@
+package com.navneet.sensormanagement;
+
+import java.util.List;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+
+public class SensorActivity extends Activity {
+ private SensorManager mSensorManager;
+ private ListView sensorsListView;
+ List deviceSensors = null;
+ String[] sensors = null;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_sensor_2);
+ mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
+ sensorsListView = (ListView) findViewById(R.id.sensorsList);
+ deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
+
+ ArrayAdapter sensorNames = new ArrayAdapter(this,
+ android.R.layout.simple_list_item_1);
+ for (Sensor s : deviceSensors) {
+ sensorNames.add(s.getName() + "\n" + "\n" + s.getMaximumRange()
+ + "\n" + "\n" + s.getType());
+
+ }
+ sensorsListView.setAdapter(sensorNames);
+
+ sensorsListView.setOnItemClickListener(new OnItemClickListener() {
+
+ @Override
+ public void onItemClick(AdapterView> parent, View view,
+ int position, long id) {
+ Intent intent = new Intent(SensorActivity.this,
+ ViewSensorDataActivity.class);
+ intent.putExtra("Sensor", deviceSensors.get(position).getName());
+ intent.putExtra("SensorType", deviceSensors.get(position)
+ .getType());
+ startActivity(intent);
+ }
+ });
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.sensor, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+ if (id == R.id.action_settings) {
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/SensorManagement/src/com/navneet/sensormanagement/SensorDataGraphActivity.java b/SensorManagement/src/com/navneet/sensormanagement/SensorDataGraphActivity.java
new file mode 100644
index 00000000..ae0faac6
--- /dev/null
+++ b/SensorManagement/src/com/navneet/sensormanagement/SensorDataGraphActivity.java
@@ -0,0 +1,193 @@
+package com.navneet.sensormanagement;
+
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParsePosition;
+import java.util.Arrays;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Color;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import com.androidplot.xy.BarFormatter;
+import com.androidplot.xy.BarRenderer;
+import com.androidplot.xy.BoundaryMode;
+import com.androidplot.xy.SimpleXYSeries;
+import com.androidplot.xy.XYPlot;
+
+public class SensorDataGraphActivity extends Activity implements
+ SensorEventListener {
+
+ // A simple formatter to conver bar indexes into sensor names
+ private class APRIndexFormat extends Format {
+ @Override
+ public StringBuffer format(Object obj, StringBuffer toAppendTo,
+ FieldPosition pos) {
+ Number num = (Number) obj;
+
+ // using num.intValue() will floor the value, so we add 0.5 to round
+ // instead:
+ int roundNum = (int) (num.floatValue() + 0.5f);
+ if (sensorType == Sensor.TYPE_ACCELEROMETER) {
+ switch (roundNum) {
+ case 0:
+ toAppendTo.append("X");
+ break;
+ case 1:
+ toAppendTo.append("Y");
+ break;
+ case 2:
+ toAppendTo.append("Z");
+ break;
+ default:
+ toAppendTo.append("Unknown");
+ }
+ }
+ if (sensorType == Sensor.TYPE_LIGHT) {
+ toAppendTo.append("LUX");
+ }
+ if (sensorType == Sensor.TYPE_PROXIMITY) {
+ toAppendTo.append("Distance");
+ }
+ return toAppendTo;
+ }
+
+ @Override
+ public Object parseObject(String source, ParsePosition pos) {
+ return null; // We don't use this so just return null for now.
+ }
+ }
+
+ private SensorManager mSensorManager;
+ private Sensor mSensor;
+ private XYPlot aprLevelsPlot = null;
+ private SimpleXYSeries aprLevelsSeries = null;
+ protected int sensorType;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_sensor_data_graph);
+ sensorType = getIntent().getIntExtra("SensorType", 0);
+ aprLevelsPlot = (XYPlot) findViewById(R.id.accelerometerPlot);
+ if (sensorType == Sensor.TYPE_ACCELEROMETER) {
+ aprLevelsSeries = new SimpleXYSeries("Acceleromter Levels");
+ }
+ if (sensorType == Sensor.TYPE_LIGHT) {
+ aprLevelsSeries = new SimpleXYSeries("Light Sensitivity");
+ }
+ if (sensorType == Sensor.TYPE_PROXIMITY) {
+ aprLevelsSeries = new SimpleXYSeries("Proximity Levels");
+ }
+ aprLevelsSeries.useImplicitXVals();
+ aprLevelsPlot.addSeries(
+ aprLevelsSeries,
+ new BarFormatter(Color.argb(100, 0, 200, 0), Color
+ .rgb(0, 80, 0)));
+ aprLevelsPlot.setDomainStepValue(3);
+ aprLevelsPlot.setTicksPerRangeLabel(3);
+ if (sensorType == Sensor.TYPE_ACCELEROMETER) {
+ aprLevelsPlot.setRangeBoundaries(-10, 20, BoundaryMode.FIXED);
+ }
+ if (sensorType == Sensor.TYPE_LIGHT) {
+ aprLevelsPlot.setRangeBoundaries(-5, 15, BoundaryMode.FIXED);
+ }
+ // if (sensorType == Sensor.TYPE_PROXIMITY) {
+ // aprLevelsPlot.setRangeBoundaries(2, 100, BoundaryMode.FIXED);
+ // }
+ // use our custom domain value formatter:
+ aprLevelsPlot.setDomainValueFormat(new APRIndexFormat());
+
+ // update our domain and range axis labels:
+ aprLevelsPlot.setDomainLabel("Axis");
+ aprLevelsPlot.getDomainLabelWidget().pack();
+ aprLevelsPlot.setRangeLabel("Distance(metres)");
+ aprLevelsPlot.getRangeLabelWidget().pack();
+ aprLevelsPlot.setGridPadding(15, 5, 15, 5);
+ BarRenderer> barRenderer = (BarRenderer>) aprLevelsPlot
+ .getRenderer(BarRenderer.class);
+ if (barRenderer != null && sensorType == Sensor.TYPE_ACCELEROMETER) {
+ barRenderer.setBarWidth(25);
+ }
+ if (barRenderer != null && sensorType == Sensor.TYPE_LIGHT) {
+ barRenderer.setBarWidth(35);
+ }
+ if (barRenderer != null && sensorType == Sensor.TYPE_PROXIMITY) {
+ barRenderer.setBarWidth(45);
+ }
+
+ mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
+ mSensor = mSensorManager.getDefaultSensor(sensorType);
+
+ }
+
+ @Override
+ protected void onResume() {
+ // TODO Auto-generated method stub
+ super.onResume();
+ mSensorManager.registerListener((SensorEventListener) this, mSensor,
+ SensorManager.SENSOR_DELAY_NORMAL);
+
+ }
+
+ @Override
+ protected void onPause() {
+ // TODO Auto-generated method stub
+ super.onPause();
+ mSensorManager.unregisterListener(this);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.sensor_data_graph, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+ if (id == R.id.action_settings) {
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onSensorChanged(SensorEvent event) {
+ if (sensorType == Sensor.TYPE_ACCELEROMETER
+ || sensorType == Sensor.TYPE_PROXIMITY) {
+ Number[] series1Numbers = { event.values[0], event.values[1],
+ event.values[2] };
+ aprLevelsSeries.setModel(Arrays.asList(series1Numbers),
+ SimpleXYSeries.ArrayFormat.Y_VALS_ONLY);
+ // Redraw the plots
+ aprLevelsPlot.redraw();
+ }
+
+ if (sensorType == Sensor.TYPE_LIGHT) {
+ Number number = event.values[0];
+ aprLevelsSeries.setModel(Arrays.asList(number),
+ SimpleXYSeries.ArrayFormat.Y_VALS_ONLY);
+ aprLevelsPlot.redraw();
+ }
+
+ }
+
+ @Override
+ public void onAccuracyChanged(Sensor sensor, int accuracy) {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/SensorManagement/src/com/navneet/sensormanagement/ViewSensorDataActivity.java b/SensorManagement/src/com/navneet/sensormanagement/ViewSensorDataActivity.java
new file mode 100644
index 00000000..86b84bdd
--- /dev/null
+++ b/SensorManagement/src/com/navneet/sensormanagement/ViewSensorDataActivity.java
@@ -0,0 +1,108 @@
+package com.navneet.sensormanagement;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.TextView;
+
+public class ViewSensorDataActivity extends Activity implements
+ SensorEventListener {
+ protected int sensorType;
+ private SensorManager mSensorManager;
+ private Sensor mSensor;
+ protected TextView sensorInformation1;
+ protected TextView sensorInformation2;
+ protected TextView sensorInformation3;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_view_sensor_data);
+ sensorInformation1 = (TextView) findViewById(R.id.sensorInformation1);
+ sensorInformation2 = (TextView) findViewById(R.id.sensorInformation2);
+ sensorInformation3 = (TextView) findViewById(R.id.sensorInformation3);
+ sensorType = getIntent().getIntExtra("SensorType", 0);
+ mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
+ mSensor = mSensorManager.getDefaultSensor(sensorType);
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.view_sensor_data, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+ if (id == R.id.action_settings) {
+ Intent intent = new Intent(ViewSensorDataActivity.this,
+ SensorDataGraphActivity.class);
+ intent.putExtra("SensorType", sensorType);
+ startActivity(intent);
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onSensorChanged(SensorEvent event) {
+ if (sensorType == Sensor.TYPE_ACCELEROMETER) {
+ float x = event.values[0];
+ float y = event.values[1];
+ float z = event.values[2];
+ sensorInformation1.setText("Acceleration along x-axis is "
+ + String.valueOf(x));
+ sensorInformation2.setText("Acceleration along y-axis is "
+ + String.valueOf(y));
+ sensorInformation3.setText("Acceleration along z-axis is "
+ + String.valueOf(z));
+ }
+ if (sensorType == Sensor.TYPE_LIGHT) {
+ float lux = event.values[0];
+ sensorInformation1.setText("Light Sensitivity is "
+ + String.valueOf(lux));
+ }
+ if (sensorType == Sensor.TYPE_PROXIMITY) {
+ float x = event.values[0];
+
+ sensorInformation1.setText("Proximity Level is "
+ + String.valueOf(x));
+
+ }
+
+ }
+
+ @Override
+ public void onAccuracyChanged(Sensor sensor, int accuracy) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ protected void onResume() {
+ // TODO Auto-generated method stub
+ super.onResume();
+ mSensorManager.registerListener(this, mSensor,
+ SensorManager.SENSOR_DELAY_NORMAL);
+ }
+
+ @Override
+ protected void onPause() {
+ // TODO Auto-generated method stub
+ super.onPause();
+ mSensorManager.unregisterListener(this);
+ }
+}