Loading src/com/elphel/sensorserver/SensorsUpdate.java +32 −3 Original line number Diff line number Diff line /* ** ** SensorsUpdate.java - Update sesnors data to be served through embedded HTTP server ** SensorsUpdate.java - Update sensors data to be served through embedded HTTP server ** ** Copyright (C) 2019 Elphel, Inc. ** Loading @@ -26,6 +26,8 @@ package com.elphel.sensorserver; import java.util.Calendar; import android.app.Activity; import android.content.Context; import android.hardware.Sensor; Loading Loading @@ -101,6 +103,13 @@ public class SensorsUpdate implements SensorEventListener{ Log.i(TAG,"magneticField is NOT null"); } else { Log.e(TAG,"magneticField is null"); } Log.e(TAG,"Setting location manager"); LocationManager locationManager = (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE); if (locationManager != null) { Log.d(TAG, "Requesting GPS Updates"); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener); Log.d(TAG, "Requested GPS Updates"); } Log.e(TAG,"resume() done"); } Loading Loading @@ -132,12 +141,28 @@ public class SensorsUpdate implements SensorEventListener{ // "mOrientationAngles" now has up-to-date information. } public long getTimeStamp() { Calendar rightNow = Calendar.getInstance(); long offset = rightNow.get(Calendar.ZONE_OFFSET) + rightNow.get(Calendar.DST_OFFSET); return rightNow.getTimeInMillis() + offset; } public float [] getOrientation() { updateOrientationAngles(); // todo: synchronize return mOrientationAngles; } public float [] getAccelerometerReading() { updateOrientationAngles(); // todo: synchronize return accelerometerReading; } public float [] getMagnetometerReading() { updateOrientationAngles(); // todo: synchronize return magnetometerReading; } public double [] getLocation() { // double longitude = Double.NaN; // double latitude = Double.NaN;; Loading @@ -147,13 +172,17 @@ public class SensorsUpdate implements SensorEventListener{ boolean isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); Log.i(TAG,"Got LocationManager: "+lm.toString()+", isGPSEnabled = "+isGPSEnabled); Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); /* if (isGPSEnabled && (location == null)) { Log.d(TAG, "Requested GPS Updates"); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener); } */ Log.i(TAG,"Got Location: "+location); if (location != null) { longitude = location.getLongitude(); latitude = location.getLatitude(); } } catch (Exception e) { Log.e(TAG,"Problem getting longitude/latitude: "+e.toString()); } Loading src/com/elphel/sensorserver/Server.java +37 −3 Original line number Diff line number Diff line Loading @@ -97,9 +97,14 @@ public class Server { float [] orientationAngles = sensorsUpdate.getOrientation(); double [] location = sensorsUpdate.getLocation(); float [] accelerometerReading = sensorsUpdate.getAccelerometerReading(); float [] magnetometerReading = sensorsUpdate.getMagnetometerReading(); long timestamp = sensorsUpdate.getTimeStamp(); // Date today = new Date(); String httpResponse = "HTTP/1.1 200 OK\r\n\r\n" + // today+"\r\n"+ orientationDegreeXml(orientationAngles, location); orientationDegreeXml(timestamp, accelerometerReading, magnetometerReading, orientationAngles, location); // String.format("<p>azimuth=%f</p>\r\n<p>pitch=%f</p>\r\n<p>roll=%f</p>\r\n", // orientationAngles[0],orientationAngles[1],orientationAngles[2]); try { Loading Loading @@ -194,20 +199,49 @@ public class Server { } return orientationXml(oad, location); } private String orientationDegreeXml(long timestamp, float [] accelerometerReading, float [] magnetometerReading, float [] orientationAngles, double[] location) { float [] oad = new float[orientationAngles.length]; for (int i = 0; i < oad.length; i++) { oad[i] = orientationAngles[i]*180/ (float)Math.PI; } return orientationXml(timestamp, accelerometerReading, magnetometerReading, oad, location); } @SuppressLint("DefaultLocale") private String orientationXml(float [] orientationAngles, double[] location) { return String.format( "<?xml version=\"1.0\"?>\r\n"+ "<orientationAngles>\r\n"+ "<sensors>"+ "<azimuth>%f</azimuth>\r\n"+ "<pitch>%f</pitch>\r\n"+ "<roll>%f</roll>\r\n"+ "<longitude>%f</longitude>\r\n"+ "<latitude>%f</latitude>\r\n"+ "<date>%s</date>\r\n"+ "</sensors>", orientationAngles[0],orientationAngles[1],orientationAngles[2], location[0], location[1], new Date()); } @SuppressLint("DefaultLocale") private String orientationXml(long timestamp, float [] accelerometerReading, float [] magnetometerReading, float [] orientationAngles, double[] location) { return String.format( "<?xml version=\"1.0\"?>\r\n"+ "<sensors>"+ "<timestmap>%d</timestmap>\r\n"+ "<accelerometer>%f, %f, %f</accelerometer>\r\n"+ "<magnetometer>%f, %f, %f</magnetometer>\r\n"+ "<azimuth>%f</azimuth>\r\n"+ "<pitch>%f</pitch>\r\n"+ "<roll>%f</roll>\r\n"+ "<longitude>%f</longitude>\r\n"+ "<latitude>%f</latitude>\r\n"+ "<date>%s</date>\r\n"+ "</orientationAngles>\r\n", "</sensors>", timestamp, accelerometerReading[0], accelerometerReading[1], accelerometerReading[2], magnetometerReading[0], magnetometerReading[1], magnetometerReading[2], orientationAngles[0],orientationAngles[1],orientationAngles[2], location[0], location[1], new Date()); } public int getPort() { return PORT; } Loading Loading
src/com/elphel/sensorserver/SensorsUpdate.java +32 −3 Original line number Diff line number Diff line /* ** ** SensorsUpdate.java - Update sesnors data to be served through embedded HTTP server ** SensorsUpdate.java - Update sensors data to be served through embedded HTTP server ** ** Copyright (C) 2019 Elphel, Inc. ** Loading @@ -26,6 +26,8 @@ package com.elphel.sensorserver; import java.util.Calendar; import android.app.Activity; import android.content.Context; import android.hardware.Sensor; Loading Loading @@ -101,6 +103,13 @@ public class SensorsUpdate implements SensorEventListener{ Log.i(TAG,"magneticField is NOT null"); } else { Log.e(TAG,"magneticField is null"); } Log.e(TAG,"Setting location manager"); LocationManager locationManager = (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE); if (locationManager != null) { Log.d(TAG, "Requesting GPS Updates"); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener); Log.d(TAG, "Requested GPS Updates"); } Log.e(TAG,"resume() done"); } Loading Loading @@ -132,12 +141,28 @@ public class SensorsUpdate implements SensorEventListener{ // "mOrientationAngles" now has up-to-date information. } public long getTimeStamp() { Calendar rightNow = Calendar.getInstance(); long offset = rightNow.get(Calendar.ZONE_OFFSET) + rightNow.get(Calendar.DST_OFFSET); return rightNow.getTimeInMillis() + offset; } public float [] getOrientation() { updateOrientationAngles(); // todo: synchronize return mOrientationAngles; } public float [] getAccelerometerReading() { updateOrientationAngles(); // todo: synchronize return accelerometerReading; } public float [] getMagnetometerReading() { updateOrientationAngles(); // todo: synchronize return magnetometerReading; } public double [] getLocation() { // double longitude = Double.NaN; // double latitude = Double.NaN;; Loading @@ -147,13 +172,17 @@ public class SensorsUpdate implements SensorEventListener{ boolean isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); Log.i(TAG,"Got LocationManager: "+lm.toString()+", isGPSEnabled = "+isGPSEnabled); Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); /* if (isGPSEnabled && (location == null)) { Log.d(TAG, "Requested GPS Updates"); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener); } */ Log.i(TAG,"Got Location: "+location); if (location != null) { longitude = location.getLongitude(); latitude = location.getLatitude(); } } catch (Exception e) { Log.e(TAG,"Problem getting longitude/latitude: "+e.toString()); } Loading
src/com/elphel/sensorserver/Server.java +37 −3 Original line number Diff line number Diff line Loading @@ -97,9 +97,14 @@ public class Server { float [] orientationAngles = sensorsUpdate.getOrientation(); double [] location = sensorsUpdate.getLocation(); float [] accelerometerReading = sensorsUpdate.getAccelerometerReading(); float [] magnetometerReading = sensorsUpdate.getMagnetometerReading(); long timestamp = sensorsUpdate.getTimeStamp(); // Date today = new Date(); String httpResponse = "HTTP/1.1 200 OK\r\n\r\n" + // today+"\r\n"+ orientationDegreeXml(orientationAngles, location); orientationDegreeXml(timestamp, accelerometerReading, magnetometerReading, orientationAngles, location); // String.format("<p>azimuth=%f</p>\r\n<p>pitch=%f</p>\r\n<p>roll=%f</p>\r\n", // orientationAngles[0],orientationAngles[1],orientationAngles[2]); try { Loading Loading @@ -194,20 +199,49 @@ public class Server { } return orientationXml(oad, location); } private String orientationDegreeXml(long timestamp, float [] accelerometerReading, float [] magnetometerReading, float [] orientationAngles, double[] location) { float [] oad = new float[orientationAngles.length]; for (int i = 0; i < oad.length; i++) { oad[i] = orientationAngles[i]*180/ (float)Math.PI; } return orientationXml(timestamp, accelerometerReading, magnetometerReading, oad, location); } @SuppressLint("DefaultLocale") private String orientationXml(float [] orientationAngles, double[] location) { return String.format( "<?xml version=\"1.0\"?>\r\n"+ "<orientationAngles>\r\n"+ "<sensors>"+ "<azimuth>%f</azimuth>\r\n"+ "<pitch>%f</pitch>\r\n"+ "<roll>%f</roll>\r\n"+ "<longitude>%f</longitude>\r\n"+ "<latitude>%f</latitude>\r\n"+ "<date>%s</date>\r\n"+ "</sensors>", orientationAngles[0],orientationAngles[1],orientationAngles[2], location[0], location[1], new Date()); } @SuppressLint("DefaultLocale") private String orientationXml(long timestamp, float [] accelerometerReading, float [] magnetometerReading, float [] orientationAngles, double[] location) { return String.format( "<?xml version=\"1.0\"?>\r\n"+ "<sensors>"+ "<timestmap>%d</timestmap>\r\n"+ "<accelerometer>%f, %f, %f</accelerometer>\r\n"+ "<magnetometer>%f, %f, %f</magnetometer>\r\n"+ "<azimuth>%f</azimuth>\r\n"+ "<pitch>%f</pitch>\r\n"+ "<roll>%f</roll>\r\n"+ "<longitude>%f</longitude>\r\n"+ "<latitude>%f</latitude>\r\n"+ "<date>%s</date>\r\n"+ "</orientationAngles>\r\n", "</sensors>", timestamp, accelerometerReading[0], accelerometerReading[1], accelerometerReading[2], magnetometerReading[0], magnetometerReading[1], magnetometerReading[2], orientationAngles[0],orientationAngles[1],orientationAngles[2], location[0], location[1], new Date()); } public int getPort() { return PORT; } Loading