Field Science issueshttps://code.cs.earlham.edu/groups/field-science/-/issues2019-09-13T12:07:45-04:00https://code.cs.earlham.edu/field-science/FieldDay/-/issues/32Bring API usages in line with the requirements of Android 10 (SDK 29)2019-09-13T12:07:45-04:00Craig EarleyBring API usages in line with the requirements of Android 10 (SDK 29)Android Q (or 10 or 29 depending on your context) is here, and I want us to keep up rather than catch up.
Several API usage models are going away, and I think it's causing buggy-looking behavior on my Samsung device (though not yet on a...Android Q (or 10 or 29 depending on your context) is here, and I want us to keep up rather than catch up.
Several API usage models are going away, and I think it's causing buggy-looking behavior on my Samsung device (though not yet on a Nexus tablet). When I run a Lint report:
```
* 'getExternalStorageDirectory()' is deprecated
* 'insertImage(android.content.ContentResolver, java.lang.String, java.lang.String, java.lang.String)' is deprecated
* 'getBitmap(android.content.ContentResolver, android.net.Uri)' is deprecated
```
This matches some GIYF investigations on the same topic. Android 10 appears to be taking additional steps to secure user privacy, and one consequence is that we're going to have to fix the way we handle media and external storage.
I'll iterate on this over the next few weeks.Craig EarleyCraig Earleyhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/31App crashes if you try to stream without selecting a sector2019-08-23T11:09:39-04:00Craig EarleyApp crashes if you try to stream without selecting a sectorIf you tap "STREAM" (using either internal sensors or Bluetooth platforms) without selecting a sector, Field Day crashes. (The expected behavior is that it does not crash...)
There are at least two possible solutions:
* Pre-populate the...If you tap "STREAM" (using either internal sensors or Bluetooth platforms) without selecting a sector, Field Day crashes. (The expected behavior is that it does not crash...)
There are at least two possible solutions:
* Pre-populate the site and sector fields with default values. This already appears to happen for the site field, although it does not follow up by populating the sector dropdown with a list of sectors associated with that site.
* On user tap of "STREAM", check for empty values in site and sector. Display a message prompting the user to select a value for each empty field. This adds friction but gives the user more transparent control. Similar logic exists already for "SAMPLE", which displays a message prompting the user to enter a spot number before taking a reading, if they have not already done so.Craig EarleyCraig Earleyhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/30Update deprecated dependencies, themes, and environment settings2019-08-05T12:08:41-04:00Craig EarleyUpdate deprecated dependencies, themes, and environment settings[This is an issue to go along with !9 and its branch.][This is an issue to go along with !9 and its branch.]Craig EarleyCraig Earleyhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/29Drive API is deprecated by Google and will stop working in December2019-08-23T10:03:20-04:00Craig EarleyDrive API is deprecated by Google and will stop working in DecemberLast year Google deprecated the Drive API we use.
Unlike some deprecations, which scold you when you run "Inspect Code" but continue to work, Google is shutting this down on their side.
[Timeline from the Google Developers website](htt...Last year Google deprecated the Drive API we use.
Unlike some deprecations, which scold you when you run "Inspect Code" but continue to work, Google is shutting this down on their side.
[Timeline from the Google Developers website](https://developers.google.com/drive/android/deprecation):
```
* December 6, 2018: Deprecation is publicly announced. Existing clients will be able to access the API normally, but should immediately commence with migration efforts. New clients must not use the API.
* October 21, 2019: The Drive Android API is removed from the Google Play Services SDK distribution. Apps will be unable to build until removing the Drive Android API dependency, but existing builds will be unaffected. The Drive Android API public documentation will no longer be available.
* December 6, 2019: The Drive Android API is shut down and all connection attempts will be refused. Clients must migrate by this date.
```
There *are* ways to adjust the app to continue using Drive, but we must change it or we won't be able to use it at all in a few months.Craig EarleyCraig Earleyhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/28Sampling -> Internal sensors on Nexus 7 crashes2019-08-01T14:23:47-04:00Craig EarleySampling -> Internal sensors on Nexus 7 crashes05-23 14:12:54.046 30426-30426/fieldscience.cs.earlham.edu.fieldday E/AndroidRuntime: FATAL EXCEPTION: main
Process: fieldscience.cs.earlham.edu.fieldday, PID: 30426
java.lang.RuntimeException: Unable to start activity Componen...05-23 14:12:54.046 30426-30426/fieldscience.cs.earlham.edu.fieldday E/AndroidRuntime: FATAL EXCEPTION: main
Process: fieldscience.cs.earlham.edu.fieldday, PID: 30426
java.lang.RuntimeException: Unable to start activity ComponentInfo{fieldscience.cs.earlham.edu.fieldday/fieldscience.cs.earlham.edu.fieldday.SensorSampleActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:337)
at android.widget.ListView.setAdapter(ListView.java:491)
at fieldscience.cs.earlham.edu.fieldday.SensorSampleActivity.onCreate(SensorSampleActivity.java:168)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Craig EarleyCraig Earleyhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/27Add prompt for location permissions2019-08-01T14:22:50-04:00Craig EarleyAdd prompt for location permissionsAfter fixing some errors and warnings, BlueTooth device detection doesn't work if Field Day lacks location permissions. Add a prompt telling the user to enable Field Day to use the device's location (or possibly whatever object Android u...After fixing some errors and warnings, BlueTooth device detection doesn't work if Field Day lacks location permissions. Add a prompt telling the user to enable Field Day to use the device's location (or possibly whatever object Android uses to request permission from the user directly).Craig EarleyCraig Earleyhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/26Sampling fragments should display units2020-09-30T09:35:28-04:00Craig EarleySampling fragments should display unitsThe bluetooth, built-in, and bench sample fragments should display the units along with each sensor value (e.g. air pressure, temperature, etc.) These are available from the fieldday_sensorThe bluetooth, built-in, and bench sample fragments should display the units along with each sensor value (e.g. air pressure, temperature, etc.) These are available from the fieldday_sensorhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/25Add an upload table2019-06-16T13:30:23-04:00Craig EarleyAdd an upload tableWe don't record when we do an upload. We should have a table whose schema might resemble the following:
- uploadId, monotonically increasing integer key
- startTime, datetime
- endTime (initialize to null, set to a datetime on complet...We don't record when we do an upload. We should have a table whose schema might resemble the following:
- uploadId, monotonically increasing integer key
- startTime, datetime
- endTime (initialize to null, set to a datetime on complete transaction)
- rowsUploaded, integer
We should update the table during each upload.Craig EarleyCraig Earleyhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/24Bench sample does not "see" spots created on the local device2019-06-16T13:30:23-04:00Craig EarleyBench sample does not "see" spots created on the local deviceBench sample does not "see" spots created on the local device (test with combination of new spot through internal sensors and then bench). Bench sample does not "see" spots created on the local device (test with combination of new spot through internal sensors and then bench). https://code.cs.earlham.edu/field-science/FieldDay/-/issues/23Display the platform software version on the sample/stream screen2019-06-16T13:30:24-04:00Craig EarleyDisplay the platform software version on the sample/stream screen Display the platform software version on the sample/stream screen. Requires simple changes on the platform Arduino code as well. Display the platform software version on the sample/stream screen. Requires simple changes on the platform Arduino code as well. https://code.cs.earlham.edu/field-science/FieldDay/-/issues/22Automatically add a row in fieldday_spot when not present2019-06-16T13:30:23-04:00Craig EarleyAutomatically add a row in fieldday_spot when not presentCurrently, upload of fieldday readings might fail when a spot is not present in fieldday_spot. In such case, catch the error, insert a row in fieldday_spot, and continue uploading. Currently, upload of fieldday readings might fail when a spot is not present in fieldday_spot. In such case, catch the error, insert a row in fieldday_spot, and continue uploading. https://code.cs.earlham.edu/field-science/FieldDay/-/issues/21Improve the way we upload data from FieldDay.2019-06-16T13:30:23-04:00Craig EarleyImprove the way we upload data from FieldDay.Currently, it takes too long. Currently, it takes too long. Craig EarleyCraig Earleyhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/20Clean the tables separately2019-06-17T13:21:24-04:00Craig EarleyClean the tables separatelyChanging it such as having the option to clean the readings table or the streaming table, rather than everything.Changing it such as having the option to clean the readings table or the streaming table, rather than everything.Craig EarleyCraig Earleyhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/19Upgrade HTC M7 to Android 7.0 (marshmallow) or 7.1 (nougat)2019-06-16T13:30:23-04:00Craig EarleyUpgrade HTC M7 to Android 7.0 (marshmallow) or 7.1 (nougat)It would be nice to have that handset available, IIRC Nic and more recently Eli have looked into this.It would be nice to have that handset available, IIRC Nic and more recently Eli have looked into this.https://code.cs.earlham.edu/field-science/datavis/-/issues/22Add support host filtering to queries2020-09-30T09:23:15-04:00Craig EarleyAdd support host filtering to queriesusing fieldday_host_temp for nowusing fieldday_host_temp for nowhttps://code.cs.earlham.edu/field-science/datavis/-/issues/21new icon for map2020-02-20T12:09:55-05:00Craig Earleynew icon for mapCharlie suggests map icon is not descriptive and should be changedCharlie suggests map icon is not descriptive and should be changedhttps://code.cs.earlham.edu/field-science/datavis/-/issues/20Map data tooltips2021-12-01T09:44:28-05:00Craig EarleyMap data tooltipsshow information for a point on hover in map viewshow information for a point on hover in map viewhttps://code.cs.earlham.edu/field-science/FieldDay/-/issues/18Sample Less Frequently2019-07-23T13:37:16-04:00Craig EarleySample Less FrequentlyCurrently, we sample far too frequently. We should make this less rapid-fire and perhaps changeable from within the app. Perhaps related to issue #16 .Currently, we sample far too frequently. We should make this less rapid-fire and perhaps changeable from within the app. Perhaps related to issue #16 .https://code.cs.earlham.edu/field-science/datavis/-/issues/19Slicing options for streaming data2022-01-07T12:41:19-05:00Craig EarleySlicing options for streaming dataAllow users to subset streaming set to be viewed close up.Allow users to subset streaming set to be viewed close up.https://code.cs.earlham.edu/field-science/datavis/-/issues/18permalink URL for readings2020-02-17T17:03:29-05:00Craig Earleypermalink URL for readingspermalinks dont work for readings right now, refer to streaming for a functional version of the same idea.permalinks dont work for readings right now, refer to streaming for a functional version of the same idea.