Prepared for release of 0.6.0

master
Keith Irwin 2017-04-26 12:57:45 -04:00
parent 8a0ed40504
commit f5cbd47795
No known key found for this signature in database
GPG Key ID: 378933C743E2BBC0
5 changed files with 56 additions and 60 deletions

View File

@ -21,8 +21,8 @@ android {
applicationId "us.keithirwin.tracman" applicationId "us.keithirwin.tracman"
minSdkVersion 15 minSdkVersion 15
targetSdkVersion 23 targetSdkVersion 23
versionCode 11 versionCode 12
versionName "0.5.0" versionName "0.6.0"
} }
buildTypes { buildTypes {
release { release {

View File

@ -12,7 +12,7 @@ public class ConnectionReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
Log.d(TAG,"onReceive() called"); //Log.d(TAG,"onReceive() called");
// Get connection information // Get connection information
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
@ -23,11 +23,11 @@ public class ConnectionReceiver extends BroadcastReceiver {
// Check connection // Check connection
if (networkInfo!=null) { if (networkInfo!=null) {
Log.d(TAG, "Connected"); //Log.d(TAG, "Connected");
context.startService(locationServiceIntent); context.startService(locationServiceIntent);
} }
else { else {
Log.d(TAG,"Disconnected"); //Log.d(TAG,"Disconnected");
context.stopService(locationServiceIntent); context.stopService(locationServiceIntent);
} }

View File

@ -67,7 +67,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
private NotificationManager mNotificationManager; private NotificationManager mNotificationManager;
private final NotificationCompat.Builder mNotificationBuilder = new NotificationCompat.Builder(this); private final NotificationCompat.Builder mNotificationBuilder = new NotificationCompat.Builder(this);
private void setupNotifications(Boolean persist) { private void setupNotifications(Boolean persist) {
Log.d(TAG,"setupNotification() called"); //Log.d(TAG,"setupNotification() called");
if (mNotificationManager == null) { if (mNotificationManager == null) {
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
@ -86,7 +86,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
.setOngoing(persist); .setOngoing(persist);
} }
private void showNotification(CharSequence text, int icon) { private void showNotification(CharSequence text, int icon) {
Log.d(TAG,"showNotification() called"); //Log.d(TAG,"showNotification() called");
mNotificationBuilder mNotificationBuilder
.setTicker(text) .setTicker(text)
.setContentText(text); .setContentText(text);
@ -110,31 +110,31 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
connectLocationUpdates(300, LocationRequest.PRIORITY_NO_POWER); connectLocationUpdates(300, LocationRequest.PRIORITY_NO_POWER);
Log.d(TAG, "Priority and interval lowered due to low power"); //Log.d(TAG, "Priority and interval lowered due to low power");
} }
}; };
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
Log.d(TAG, "onCreate called"); //Log.d(TAG, "onCreate called");
// Get preferences // Get preferences
sharedPref = PreferenceManager.getDefaultSharedPreferences(this); sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
setupNotifications(true); setupNotifications(true);
showNotification(getText(R.string.notify_connecting), ICON_OFF); showNotification(getText(R.string.notify_connecting), ICON_OFF);
Log.d(TAG, "Notification set up"); //Log.d(TAG, "Notification set up");
buildGoogleApiClient(); buildGoogleApiClient();
Log.d(TAG, "Google API Client built"); //Log.d(TAG, "Google API Client built");
mGoogleApiClient.connect(); mGoogleApiClient.connect();
Log.d(TAG, "Connected to Google API Client"); //Log.d(TAG, "Connected to Google API Client");
IntentFilter lowPowerFilter = new IntentFilter(); IntentFilter lowPowerFilter = new IntentFilter();
lowPowerFilter.addAction("android.intent.action.BATTERY_LOW"); lowPowerFilter.addAction("android.intent.action.BATTERY_LOW");
registerReceiver(LowPowerReceiver, lowPowerFilter); registerReceiver(LowPowerReceiver, lowPowerFilter);
Log.d(TAG, "LowPowerReceiver activated"); //Log.d(TAG, "LowPowerReceiver activated");
mUserID = sharedPref.getString("loggedInUserId", null); mUserID = sharedPref.getString("loggedInUserId", null);
mUserSK = sharedPref.getString("loggedInUserSk", null); mUserSK = sharedPref.getString("loggedInUserSk", null);
@ -157,7 +157,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
@Override @Override
public void call(Object... args) { public void call(Object... args) {
Exception e = (Exception) args[0]; Exception e = (Exception) args[0];
Log.e(TAG, "Transport error: " + e); //Log.e(TAG, "Transport error: " + e);
e.printStackTrace(); e.printStackTrace();
e.getCause().printStackTrace(); e.getCause().printStackTrace();
} }
@ -179,7 +179,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
} catch (URISyntaxException e) { } catch (URISyntaxException e) {
showNotification(getText(R.string.server_connection_error), ICON_OFF); showNotification(getText(R.string.server_connection_error), ICON_OFF);
Log.e(TAG, "Failed to connect to sockets server " + SERVER_ADDRESS, e); //Log.e(TAG, "Failed to connect to sockets server " + SERVER_ADDRESS, e);
} }
} }
@ -210,13 +210,10 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
// Get permission // Get permission
if (!checkLocationPermission(this)) { if (!checkLocationPermission(this)) {
Log.d(TAG, "Location permission denied"); //Log.d(TAG, "Location permission denied");
// stopSelf();
//TODO: Ask the user to try again //TODO: Ask the user to try again
} else { } else {
Log.d(TAG, "Location permission granted"); //Log.d(TAG, "Location permission granted");
// Request location updates // Request location updates
if (mGoogleApiClient.isConnected()) { if (mGoogleApiClient.isConnected()) {
@ -242,7 +239,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
@Override @Override
public void onConnected(Bundle bundle) { public void onConnected(Bundle bundle) {
Log.d(TAG, "onConnected called"); //Log.d(TAG, "onConnected called");
mLocationRequest = LocationRequest.create(); mLocationRequest = LocationRequest.create();
connectLocationUpdates(getIntervalSetting(), getPrioritySetting()); connectLocationUpdates(getIntervalSetting(), getPrioritySetting());
@ -256,7 +253,7 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
@Override @Override
public void onConnectionFailed(ConnectionResult connectionResult) { public void onConnectionFailed(ConnectionResult connectionResult) {
Log.e(TAG, "onConnectionFailed: " + connectionResult); //Log.e(TAG, "onConnectionFailed: " + connectionResult);
showNotification(getText(R.string.google_connection_error), ICON_OFF); showNotification(getText(R.string.google_connection_error), ICON_OFF);
buildGoogleApiClient(); buildGoogleApiClient();
} }
@ -265,11 +262,11 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
@Override @Override
public void call(final Object... args) { public void call(final Object... args) {
if (args[0].toString().equals("true")) { if (args[0].toString().equals("true")) {
Log.d(TAG, "Activating realtime updates"); //Log.d(TAG, "Activating realtime updates");
connectLocationUpdates(getIntervalSetting(), getPrioritySetting()); connectLocationUpdates(getIntervalSetting(), getPrioritySetting());
showNotification(getString(R.string.realtime_updates), ICON_ON); showNotification(getString(R.string.realtime_updates), ICON_ON);
} else { } else {
Log.d(TAG, "Deactivating realtime updates"); //Log.d(TAG, "Deactivating realtime updates");
connectLocationUpdates(300, LocationRequest.PRIORITY_NO_POWER); connectLocationUpdates(300, LocationRequest.PRIORITY_NO_POWER);
showNotification(getString(R.string.occasional_updates), ICON_HALF); showNotification(getString(R.string.occasional_updates), ICON_HALF);
} }
@ -290,13 +287,13 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
mLocationView.put("dir", String.valueOf(location.getBearing())); mLocationView.put("dir", String.valueOf(location.getBearing()));
mLocationView.put("spd", String.valueOf(location.getSpeed())); mLocationView.put("spd", String.valueOf(location.getSpeed()));
} catch (JSONException e) { } catch (JSONException e) {
Log.e(TAG, "Failed to put JSON data"); //Log.e(TAG, "Failed to put JSON data");
} }
socket.emit("set", mLocationView); socket.emit("set", mLocationView);
Log.v(TAG, "Location set: " + mLocationView.toString()); //Log.v(TAG, "Location set: " + mLocationView.toString());
} }
else { else {
Log.v(TAG, "Can't set location because user isn't logged in."); //Log.v(TAG, "Can't set location because user isn't logged in.");
stopSelf(); stopSelf();
} }
@ -304,27 +301,27 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
@Override @Override
public void onConnectionSuspended(int i) { public void onConnectionSuspended(int i) {
Log.d(TAG, "onConnectionSuspended called"); //Log.d(TAG, "onConnectionSuspended called");
showNotification(getText(R.string.google_connection_error), ICON_OFF); showNotification(getText(R.string.google_connection_error), ICON_OFF);
} }
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
Log.d(TAG, "onDestroy executed"); //Log.d(TAG, "onDestroy executed");
socket.disconnect(); socket.disconnect();
socket.off("activate", onActivate); socket.off("activate", onActivate);
Log.d(TAG, "Disconnected from sockets"); //Log.d(TAG, "Disconnected from sockets");
mGoogleApiClient.disconnect(); mGoogleApiClient.disconnect();
Log.d(TAG, "Google API disconnected"); //Log.d(TAG, "Google API disconnected");
unregisterReceiver(LowPowerReceiver); unregisterReceiver(LowPowerReceiver);
Log.d(TAG, "LowPowerReceiver deactivated"); //Log.d(TAG, "LowPowerReceiver deactivated");
setupNotifications(false); setupNotifications(false);
showNotification(getText(R.string.disconnected), ICON_OFF); showNotification(getText(R.string.disconnected), ICON_OFF);
Log.d(TAG, "Notification changed"); //Log.d(TAG, "Notification changed");
} }
} }

View File

@ -62,7 +62,7 @@ public class LoginActivity extends AppCompatActivity implements
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
Log.v(TAG, "created"); //Log.v(TAG, "created");
// Set up layout // Set up layout
setContentView(R.layout.activity_login); setContentView(R.layout.activity_login);
@ -99,16 +99,16 @@ public class LoginActivity extends AppCompatActivity implements
@Override @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
Log.v(TAG, "onStart() called"); //Log.v(TAG, "onStart() called");
// Try to sign in // Try to sign in
if (!DONT_LOG_IN) { if (!DONT_LOG_IN) {
Log.v(TAG, "Trying to sign in..."); //Log.v(TAG, "Trying to sign in...");
OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient); OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
if (opr.isDone()) { if (opr.isDone()) {
// If the user's cached credentials are valid, the OptionalPendingResult will be "done" // If the user's cached credentials are valid, the OptionalPendingResult will be "done"
// and the GoogleSignInResult will be available instantly. // and the GoogleSignInResult will be available instantly.
Log.d(TAG, "Got cached sign-in"); //Log.d(TAG, "Got cached sign-in");
GoogleSignInResult result = opr.get(); GoogleSignInResult result = opr.get();
handleGoogleSignInResult(result); handleGoogleSignInResult(result);
} else { } else {
@ -141,12 +141,12 @@ public class LoginActivity extends AppCompatActivity implements
SharedPreferences.Editor editor = sharedPref.edit(); SharedPreferences.Editor editor = sharedPref.edit();
// Stop LocationService // Stop LocationService
Log.v(TAG, "Stopping location service..."); //Log.v(TAG, "Stopping location service...");
stopService(new Intent(LoginActivity.this, LocationService.class)); stopService(new Intent(LoginActivity.this, LocationService.class));
editor.putBoolean("gps_switch",false); editor.putBoolean("gps_switch",false);
// Remove saved loggedInUser // Remove saved loggedInUser
Log.v(TAG, "Removing saved user..."); //Log.v(TAG, "Removing saved user...");
editor.remove("loggedInUser"); editor.remove("loggedInUser");
editor.remove("loggedInUserId"); editor.remove("loggedInUserId");
editor.remove("loggedInUserName"); editor.remove("loggedInUserName");
@ -158,17 +158,17 @@ public class LoginActivity extends AppCompatActivity implements
@Override @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
Log.v(TAG, "onActivityResult() called"); //Log.v(TAG, "onActivityResult() called");
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) { if (requestCode == RC_SIGN_IN) {
Log.v(TAG, "requestCode was RC_SIGN_IN"); //Log.v(TAG, "requestCode was RC_SIGN_IN");
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleGoogleSignInResult(result); handleGoogleSignInResult(result);
} }
// User just logged out. Don't log in again, stupid // User just logged out. Don't log in again, stupid
else if (requestCode == SIGN_OUT) { else if (requestCode == SIGN_OUT) {
Log.v(TAG, "requestCode was SIGN_OUT"); //Log.v(TAG, "requestCode was SIGN_OUT");
DONT_LOG_IN = true; DONT_LOG_IN = true;
} }
@ -193,7 +193,7 @@ public class LoginActivity extends AppCompatActivity implements
client.newCall(request).enqueue(new Callback() { client.newCall(request).enqueue(new Callback() {
@Override @Override
public void onFailure(Call call, IOException e) { public void onFailure(Call call, IOException e) {
Log.e(TAG, "Failed to connect to Tracman server!"); //Log.e(TAG, "Failed to connect to Tracman server!");
showError(R.string.server_connection_error); showError(R.string.server_connection_error);
e.printStackTrace(); e.printStackTrace();
} }
@ -205,7 +205,7 @@ public class LoginActivity extends AppCompatActivity implements
res.body().close(); res.body().close();
throw new IOException("Unexpected code: " + res); throw new IOException("Unexpected code: " + res);
} else { } else {
Log.d(TAG, "Response code: " + res.code()); //Log.d(TAG, "Response code: " + res.code());
String userString = res.body().string(); String userString = res.body().string();
System.out.println("Full response: " + userString); System.out.println("Full response: " + userString);
@ -215,10 +215,10 @@ public class LoginActivity extends AppCompatActivity implements
userID = user.getString("_id"); userID = user.getString("_id");
userName = user.getString("name"); userName = user.getString("name");
userSK = user.getString("sk32"); userSK = user.getString("sk32");
Log.v(TAG, "User retrieved with ID: " + userID); //Log.v(TAG, "User retrieved with ID: " + userID);
} catch (JSONException e) { } catch (JSONException e) {
Log.e(TAG, "Unable to parse user JSON: ", e); //Log.e(TAG, "Unable to parse user JSON: ", e);
Log.e(TAG, "JSON String used: " + userString); //Log.e(TAG, "JSON String used: " + userString);
userID = null; userID = null;
userName = null; userName = null;
userSK = null; userSK = null;
@ -243,10 +243,9 @@ public class LoginActivity extends AppCompatActivity implements
} }
private void handleGoogleSignInResult(GoogleSignInResult result) { private void handleGoogleSignInResult(GoogleSignInResult result) {
// Log.d(TAG, "handleSignInResult:" + result.isSuccess()); //Log.d(TAG, "handleSignInResult:" + result.isSuccess());
if (result.isSuccess()) { // Signed in successfully if (result.isSuccess()) { // Signed in successfully
GoogleSignInAccount acct = result.getSignInAccount(); GoogleSignInAccount acct = result.getSignInAccount();
// Log.v(TAG, "Google token: " + googleToken);
try { try {
// Build request // Build request
@ -258,10 +257,10 @@ public class LoginActivity extends AppCompatActivity implements
authenticateWithTracmanServer(request); authenticateWithTracmanServer(request);
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG, "Error sending ID token to backend.", e); //Log.e(TAG, "Error sending ID token to backend.", e);
} }
} else { } else {
// Log.e(TAG, "Failed to log in: "+result.getStatus().getStatusCode()); //Log.e(TAG, "Failed to log in: "+result.getStatus().getStatusCode());
if (result.getStatus().getStatusCode()!=4) { if (result.getStatus().getStatusCode()!=4) {
showError(R.string.google_connection_error); showError(R.string.google_connection_error);
} }
@ -269,7 +268,7 @@ public class LoginActivity extends AppCompatActivity implements
} }
public void signInWithPassword() { public void signInWithPassword() {
Log.d(TAG, "signInWithPassword() called"); //Log.d(TAG, "signInWithPassword() called");
// Get params from form // Get params from form
EditText emailText = (EditText)findViewById(R.id.login_email); EditText emailText = (EditText)findViewById(R.id.login_email);
@ -291,16 +290,16 @@ public class LoginActivity extends AppCompatActivity implements
// Send formdata to endpoint // Send formdata to endpoint
try { try {
Log.v(TAG, "Sending local login POST to server..."); //Log.v(TAG, "Sending local login POST to server...");
authenticateWithTracmanServer(request); authenticateWithTracmanServer(request);
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG, "Error sending local login to backend:",e); //Log.e(TAG, "Error sending local login to backend:",e);
} }
} }
public void signInWithGoogle() { public void signInWithGoogle() {
Log.v(TAG, "signInWithGoogle() called"); //Log.v(TAG, "signInWithGoogle() called");
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN); startActivityForResult(signInIntent, RC_SIGN_IN);
} }
@ -322,7 +321,7 @@ public class LoginActivity extends AppCompatActivity implements
@Override @Override
public void onConnectionFailed(ConnectionResult connectionResult) { public void onConnectionFailed(ConnectionResult connectionResult) {
showError(R.string.disconnected); showError(R.string.disconnected);
// Log.d(TAG, "onConnectionFailed:" + connectionResult); //Log.d(TAG, "onConnectionFailed:" + connectionResult);
} }
private void showProgressDialog() { private void showProgressDialog() {
@ -352,14 +351,14 @@ public class LoginActivity extends AppCompatActivity implements
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Log.v(TAG, "onClick() called"); //Log.v(TAG, "onClick() called");
switch (v.getId()) { switch (v.getId()) {
case R.id.login_button: case R.id.login_button:
Log.v(TAG, "Password login button pressed"); //Log.v(TAG, "Password login button pressed");
signInWithPassword(); signInWithPassword();
break; break;
case R.id.login_button_google: case R.id.login_button_google:
Log.v(TAG, "Google login button pressed"); //Log.v(TAG, "Google login button pressed");
signInWithGoogle(); signInWithGoogle();
break; break;
// case R.id.login_button_facebook: // case R.id.login_button_facebook:

View File

@ -207,7 +207,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
@Override @Override
public void onBackPressed() { public void onBackPressed() {
Log.v(TAG,"onBackPressed() called"); //Log.v(TAG,"onBackPressed() called");
// Return to LoginActivity and don't sign back in again // Return to LoginActivity and don't sign back in again
setResult(SIGN_OUT, new Intent()); setResult(SIGN_OUT, new Intent());