diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 280f9791fa5f4473fe402ddaeb43e366d8d2de1e..40bcf1819129c09bf596a14dfff2fd79c1c17bdd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -59,7 +59,11 @@ android:label="My Documents Viewer" android:theme="@style/MainTheme"> </activity> - + <activity + android:name=".BenchSampleActivity" + android:label="Bench Sampling" + android:theme="@style/MainTheme"> + </activity> <service android:name=".BluetoothLeService" android:enabled="true" /> diff --git a/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/MainScreenActivity.java b/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/MainScreenActivity.java index 07e84d5d02eb0df17f3124afd8dc53680319a0f8..75873582b7e7af37fed383796a21f014b7dc5896 100644 --- a/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/MainScreenActivity.java +++ b/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/MainScreenActivity.java @@ -79,6 +79,10 @@ public class MainScreenActivity extends Activity { i.putExtra(SensorSampleActivity.WHICH_SENSOR, "built-in"); checkDatabase(i); break; + case R.id.buttonBenchSample: + i = new Intent(context, BenchSampleActivity.class); + checkDatabase(i); + break; } } diff --git a/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/ReadingsDatabase.java b/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/ReadingsDatabase.java index 10a65dce1eadc863e30e257a43f51d5d4f594d8c..e7a68e5149cd8c5b2c538d814614ce9a0719196a 100644 --- a/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/ReadingsDatabase.java +++ b/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/ReadingsDatabase.java @@ -27,6 +27,8 @@ public class ReadingsDatabase extends SQLiteOpenHelper { // Name of database public static final String DB_NAME = "readings.db"; + private static final String TAG = ReadingsDatabase.class.getSimpleName(); + // Name of tables public static final String T_TRIP = "fieldday_trip"; public static final String T_SITE = "fieldday_site"; @@ -416,11 +418,47 @@ public class ReadingsDatabase extends SQLiteOpenHelper { db.close(); } - public List<String> getSectors(){ + public List<String> getSpots(String site, String sector){ SQLiteDatabase db = this.getReadableDatabase(); - String[] columns = {"sectorName"}; - Cursor c = db.query(T_SECTOR, columns, null, null, null, null, null); - List<String> values = new ArrayList<String>(); + Cursor c = null; + List<String> values = new ArrayList<>(); + if ((site != null) && (sector != null)){ + c = db.query(T_SECTOR, new String[]{C_SECTORID}, "sectorName = ?", new String[]{sector}, + null, null, null); + c.moveToFirst(); + int sectorid = c.getInt(c.getColumnIndex(C_SECTORID)); + c.close(); + c = db.query(T_SITE, new String[]{C_SITEID}, "siteName = ?", new String[]{site}, + null, null, null); + c.moveToFirst(); + int siteid = c.getInt(c.getColumnIndex(C_SITEID)); + c.close(); + c = db.query(T_SPOT, new String[] {C_SPOTID}, "siteID = ? and sectorID = ?", + new String[]{Integer.toString(siteid), Integer.toString(sectorid)}, + null, null, null); + } + while(c.moveToNext()){ + values.add(Integer.toString(c.getInt(c.getColumnIndex(C_SPOTID)))); + } + c.close(); + return values; + } + + public List<String> getSectors(String site){ + SQLiteDatabase db = this.getReadableDatabase(); + Cursor c = null; + List<String> values = new ArrayList<>(); + if (site != null){ + c = db.query(T_SITE, new String[]{C_SITEID}, "siteName = ?", new String[]{site}, + null, null, null); + c.moveToFirst(); + int id = c.getInt(c.getColumnIndex(C_SITEID)); + c.close(); + c = db.query(T_SECTOR, new String[]{C_SECTORNAME}, "siteID = ?", new String[]{Integer.toString(id)}, + null, null, null); + } else { + c = db.query(T_SECTOR, new String[]{C_SECTORNAME}, null, null, null, null, null); + } while (c.moveToNext()) { values.add(c.getString(c.getColumnIndex("sectorName"))); } @@ -428,7 +466,7 @@ public class ReadingsDatabase extends SQLiteOpenHelper { return values; } - public List<String> getSites(){ + public List<String> getSites(String trip){ SQLiteDatabase db = this.getReadableDatabase(); String[] columns = {"siteName"}; Cursor c = db.query(T_SITE, columns, null, null, null, null, null); @@ -440,6 +478,40 @@ public class ReadingsDatabase extends SQLiteOpenHelper { return values; } + public List<String> getPlatforms(){ + SQLiteDatabase db = this.getReadableDatabase(); + Cursor c = db.query(T_PLATFORM, new String[]{C_PLATFORMNAME}, null, null, null, null, null); + List<String> values = new ArrayList<>(); + while (c.moveToNext()){ + values.add(c.getString(c.getColumnIndex("platformName"))); + } + c.close(); + return values; + } + + public List<String> getSensors(String platform){ + SQLiteDatabase db = this.getReadableDatabase(); + List<String> values = new ArrayList<>(); + Cursor c = null; + if (platform != null){ + c = db.query(T_PLATFORM, new String[]{C_PLATFORMID}, "platformName = ?", new String[]{platform}, + null, null, null); + c.moveToFirst(); + String platformId = c.getString(c.getColumnIndex(C_PLATFORMID)); + Log.d(TAG, platformId); + c.close(); + c = db.query(T_SENSOR, new String[]{C_SENSORTYPE}, "platformID = ?", new String[]{platformId}, + null, null, null); + } else { + c = db.query(T_SENSOR, new String[]{C_SENSORTYPE}, null, null, null, null, null); + } + while (c.moveToNext()){ + values.add(c.getString(c.getColumnIndex("sensorType"))); + } + c.close(); + return values; + } + public long getSize() { return dbPath.length(); } @@ -453,7 +525,7 @@ public class ReadingsDatabase extends SQLiteOpenHelper { // Empty database if (getSize() == 0){ return 0; - } else if (getSites().size() != 0) { + } else if (getSites(null).size() != 0) { if (readings != 0) { if (streaming == 0) { // Just readings populated diff --git a/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/SensorSampleActivity.java b/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/SensorSampleActivity.java index 46009b7b753568f0c67b4e171a67bea11a6e903b..d021a6c16df34feb4ccf0ed29c10747c03504b53 100644 --- a/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/SensorSampleActivity.java +++ b/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/SensorSampleActivity.java @@ -387,8 +387,8 @@ public class SensorSampleActivity extends Activity { List<String> siteList = new ArrayList<String>(); List<String> sectorList = new ArrayList<String>(); if (remote_db){ - siteList = db.getSites(); - sectorList = db.getSectors(); + siteList = db.getSites(null); + sectorList = db.getSectors(null); } else { siteList.clear(); sectorList.clear(); @@ -396,7 +396,8 @@ public class SensorSampleActivity extends Activity { ArrayAdapter<String> siteAdapter = new ArrayAdapter<String>(this, - android.R.layout.simple_dropdown_item_1line, siteList); + android.R.layout.simple_spinner_item, siteList); + siteAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); siteSpinner.setAdapter(siteAdapter); siteSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override @@ -414,7 +415,8 @@ public class SensorSampleActivity extends Activity { }); ArrayAdapter<String> sectorAdapter = new ArrayAdapter<String>(this, - android.R.layout.simple_dropdown_item_1line, sectorList); + android.R.layout.simple_spinner_item, sectorList); + sectorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sectorSpinner.setAdapter(sectorAdapter); sectorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override diff --git a/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/SensorSampleService.java b/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/SensorSampleService.java index 1fc2af1efea8a2f92434ee3a06ecf0d579998ad2..1d5e7207494f9d652b311ea344756cf243e72715 100644 --- a/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/SensorSampleService.java +++ b/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/SensorSampleService.java @@ -346,16 +346,28 @@ public class SensorSampleService extends Service implements SensorEventListener builtinList = mSensorManager.getSensorList(Sensor.TYPE_ALL); for (Sensor s : builtinList){ - mSensorManager.registerListener(this, s, 100000000); + Log.d(TAG, "sensor in built in list: " + s.getName()); + Log.d(TAG, "sensor in built in list type: " + s.getStringType()); + if (s.getStringType().contains("android")){ + if (!s.getName().contains("Secondary")){ + mSensorManager.registerListener(this, s, 100000000); + } + } } for (int i=0; i<builtinList.size(); i++) { - aSensor sens = new aSensor(builtinList.get(i)); // This is to figure out which sensors are uncalibrated String delims = "[ .]+"; - String[] tokens = sens.getStringType().split(delims); - sens.setName(tokens[2]); - sensorList.add(sens); + if (builtinList.get(i).getStringType().startsWith("android")){ + if (!builtinList.get(i).getName().contains("Secondary")) { + aSensor sens = new aSensor(builtinList.get(i)); + String[] tokens = sens.getStringType().split(delims); + sens.setName(tokens[2]); + Log.d(TAG, "Setting aSensor name: " + tokens[2]); + Log.d(TAG, "aSensor type: " + sens.getStringType()); + sensorList.add(sens); + } + } } } } @@ -492,7 +504,6 @@ public class SensorSampleService extends Service implements SensorEventListener break; case Sensor.TYPE_GRAVITY: sens.setLastValue(values, 3); - sens.setUnits("r"); sens.setID("and5"); break; case Sensor.TYPE_GYROSCOPE: diff --git a/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/aSensor.java b/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/aSensor.java index 305b6434dfedb7f1997070398dd197eaca64338b..54810c0ff8ed0be985719100cd97a4798bd1d70d 100644 --- a/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/aSensor.java +++ b/app/src/main/java/fieldscience/cs/earlham/edu/fieldday/aSensor.java @@ -9,7 +9,7 @@ public class aSensor implements Parcelable { private float[] lastValues; private float quality; private Integer numberValues; - private String type, platform, name, id, units; + private String type, platform, name, id; private Sensor sensor; // Using Built In sensors @@ -96,8 +96,6 @@ public class aSensor implements Parcelable { public void setPlatform(String platformName){ platform = platformName; } - public void setUnits(String sensorUnits) { units = sensorUnits; } - public void setName(String sensorName){ name = sensorName; } diff --git a/app/src/main/res/layout/activity_sensorsample.xml b/app/src/main/res/layout/activity_sensorsample.xml index 9a09385d1db6b2ce61ce47f51c93a14ba1207c78..dfbdb11c63df20a96a875a25a5e5a1e56b9f50b3 100644 --- a/app/src/main/res/layout/activity_sensorsample.xml +++ b/app/src/main/res/layout/activity_sensorsample.xml @@ -152,8 +152,8 @@ android:layout_height="wrap_content" android:contentDescription="@string/export" android:src="@drawable/export_button" - android:layout_below="@android:id/list" - android:layout_alignStart="@android:id/list" /> + android:layout_alignParentBottom="true" + android:layout_toStartOf="@+id/streamButton" /> <ImageButton android:layout_width="wrap_content" @@ -162,8 +162,8 @@ android:background="@null" android:contentDescription="@string/stream" android:src="@drawable/stream_button" - android:layout_alignParentBottom="true" - android:layout_alignStart="@+id/longandlat" /> + android:layout_alignTop="@+id/sampleButton" + android:layout_centerHorizontal="true" /> <ImageButton android:layout_width="wrap_content" @@ -172,7 +172,7 @@ android:background="@null" android:contentDescription="@string/sample" android:src="@drawable/sample_button" - android:layout_alignParentBottom="true" - android:layout_toEndOf="@+id/longandlat" /> + android:layout_alignTop="@+id/exportDbButton" + android:layout_toEndOf="@+id/interval" /> </RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_sensorscreen.xml b/app/src/main/res/layout/fragment_sensorscreen.xml index 41c39015946f165a01e1f5861f175427aeb916ca..e4eb5037322868ec42a567cb88abff0cb67f8487 100644 --- a/app/src/main/res/layout/fragment_sensorscreen.xml +++ b/app/src/main/res/layout/fragment_sensorscreen.xml @@ -44,6 +44,14 @@ android:contentDescription="@string/databaseActions" android:background="@null" android:onClick="startSampleActivity" /> + <Button + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:text="@string/benchSample" + android:contentDescription="@string/benchSample" + android:id="@+id/buttonBenchSample" + android:onClick="startSampleActivity" /> </LinearLayout> </LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8a97aa9835689d473ecb406652576473c545d14a..1f169e40cac6bd912429da3253be553716dbd6cd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -62,6 +62,7 @@ <string name="bluetoothSensor">Take a sample with Bluetooth Sensors</string> <string name="builtinSensors">Take a sample with built in sensors</string> <string name="databaseActions">Work with database</string> + <string name="benchSample">Bench sample</string> <!--Bluetooth Sensor String --> <string name="reread">Re-read connected sensor</string> @@ -69,7 +70,10 @@ <!-- Sensor Strings --> <string name="built_in_sensor">"%1$s: "</string> <string name="sensorName">Sensor Name</string> - <string name="sensorValue">Sensor Value</string> + <string name="sensorValue">Sensor Value: </string> + <string name="readingNotes">Reading Notes </string> + <string name="sensorQuality">Quality: </string> + <string name="recordButton">Record</string> <!-- Bluetooth related strings --> <string name="ble_not_supported">Bluetooth Low Energy (LE) is not supported on this device.</string> diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 6df159419f4f84b5a7f1b3607f355be873caea95..9baf75530cd4052b24d6e6c89ade443b89b077fb 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <style name="MainTheme" parent="@android:style/Theme.Material.NoActionBar.Fullscreen"> + <style name="MainTheme" parent="@android:style/Theme.Holo.Light.NoActionBar"> <item name="android:windowBackground">@drawable/background</item> <item name="android:colorControlActivated">@color/dark_gray_blue</item> </style>