Various changes, set version to match server
parent
c6cc56602c
commit
4dbbc818bb
|
@ -37,7 +37,7 @@
|
||||||
<ConfirmationsSetting value="0" id="Add" />
|
<ConfirmationsSetting value="0" id="Add" />
|
||||||
<ConfirmationsSetting value="0" id="Remove" />
|
<ConfirmationsSetting value="0" id="Remove" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|
|
@ -22,7 +22,7 @@ android {
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 23
|
targetSdkVersion 23
|
||||||
versionCode 10
|
versionCode 10
|
||||||
versionName "0.2.0"
|
versionName "0.5.0"
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
|
@ -42,13 +42,10 @@ dependencies {
|
||||||
compile 'com.android.support:design:23.2.0'
|
compile 'com.android.support:design:23.2.0'
|
||||||
compile 'com.google.android.gms:play-services-location:9.8.0'
|
compile 'com.google.android.gms:play-services-location:9.8.0'
|
||||||
compile 'com.google.android.gms:play-services-auth:9.8.0'
|
compile 'com.google.android.gms:play-services-auth:9.8.0'
|
||||||
compile ('com.github.nkzawa:socket.io-client:0.4.1'){
|
compile ('io.socket:socket.io-client:0.8.3'){
|
||||||
exclude group: 'org.json', module: 'json'
|
exclude group:'org.json', module:'json'
|
||||||
}
|
}
|
||||||
compile 'com.squareup.retrofit2:retrofit:2.2.0'
|
compile 'com.squareup.retrofit2:retrofit:2.2.0'
|
||||||
// compile 'com.squareup.retrofit2:converter-gson:2.2.0'
|
|
||||||
// compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3'
|
|
||||||
// compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.google.gms.google-services'
|
apply plugin: 'com.google.gms.google-services'
|
|
@ -12,15 +12,12 @@ import android.content.IntentFilter;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.net.ConnectivityManager;
|
|
||||||
import android.net.NetworkInfo;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.app.ActivityCompat;
|
import android.support.v4.app.ActivityCompat;
|
||||||
import android.support.v4.app.NotificationCompat;
|
import android.support.v4.app.NotificationCompat;
|
||||||
import android.support.v4.content.ContextCompat;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.google.android.gms.common.ConnectionResult;
|
import com.google.android.gms.common.ConnectionResult;
|
||||||
|
@ -29,9 +26,11 @@ import com.google.android.gms.location.LocationListener;
|
||||||
import com.google.android.gms.location.LocationRequest;
|
import com.google.android.gms.location.LocationRequest;
|
||||||
import com.google.android.gms.location.LocationServices;
|
import com.google.android.gms.location.LocationServices;
|
||||||
|
|
||||||
import com.github.nkzawa.emitter.Emitter;
|
import io.socket.client.IO;
|
||||||
import com.github.nkzawa.socketio.client.IO;
|
import io.socket.client.Manager;
|
||||||
import com.github.nkzawa.socketio.client.Socket;
|
import io.socket.emitter.Emitter;
|
||||||
|
import io.socket.client.Socket;
|
||||||
|
import io.socket.engineio.client.Transport;
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
@ -42,10 +41,10 @@ import java.net.URISyntaxException;
|
||||||
public class LocationService extends Service implements GoogleApiClient.ConnectionCallbacks,
|
public class LocationService extends Service implements GoogleApiClient.ConnectionCallbacks,
|
||||||
GoogleApiClient.OnConnectionFailedListener, LocationListener {
|
GoogleApiClient.OnConnectionFailedListener, LocationListener {
|
||||||
public LocationService() {}
|
public LocationService() {}
|
||||||
// private String TAG = "LocationService";
|
private String TAG = "LocationService";
|
||||||
final String SERVER_ADDRESS = "https://dev.tracman.org/";
|
final String SERVER_ADDRESS = "https://dev.tracman.org";
|
||||||
|
|
||||||
private Socket mSocket;
|
private Socket socket;
|
||||||
private String mUserID;
|
private String mUserID;
|
||||||
private String mUserSK;
|
private String mUserSK;
|
||||||
private SharedPreferences sharedPref;
|
private SharedPreferences sharedPref;
|
||||||
|
@ -101,47 +100,92 @@ 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");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// private TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
|
||||||
|
// public java.security.cert.X509Certificate[] getAcceptedIssuers() {
|
||||||
|
// return new java.security.cert.X509Certificate[] {};
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public void checkClientTrusted(X509Certificate[] chain,
|
||||||
|
// String authType) throws CertificateException {
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public void checkServerTrusted(X509Certificate[] chain,
|
||||||
|
// String authType) throws CertificateException {
|
||||||
|
// }
|
||||||
|
// } };
|
||||||
|
|
||||||
@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.connecting), false);
|
showNotification(getText(R.string.connecting), false);
|
||||||
// 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);
|
||||||
|
|
||||||
// Connect to socket
|
|
||||||
try {
|
try {
|
||||||
mSocket = IO.socket(SERVER_ADDRESS);
|
|
||||||
mSocket.on("activate", onActivate);
|
// Connect to socket.io
|
||||||
mSocket.connect();
|
IO.Options opts = new IO.Options();
|
||||||
mSocket.emit("room", "app-"+mUserID);
|
opts.secure = true;
|
||||||
// Log.d(TAG, "Connected to socket.io server "+SERVER_ADDRESS);
|
socket = IO.socket(SERVER_ADDRESS, opts);
|
||||||
|
|
||||||
|
showNotification(getText(R.string.connected), false);
|
||||||
|
|
||||||
|
// Log errors
|
||||||
|
socket.io().on(Manager.EVENT_TRANSPORT, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... args) {
|
||||||
|
Transport transport = (Transport) args[0];
|
||||||
|
transport.on(Transport.EVENT_ERROR, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... args) {
|
||||||
|
Exception e = (Exception) args[0];
|
||||||
|
Log.e(TAG, "Transport error " + e);
|
||||||
|
e.printStackTrace();
|
||||||
|
e.getCause().printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
|
||||||
|
@Override
|
||||||
|
public void call(Object... args) {
|
||||||
|
socket.emit("can-set", mUserID);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Listen for activation signals
|
||||||
|
socket.on("activate", onActivate);
|
||||||
|
|
||||||
|
socket.connect();
|
||||||
|
|
||||||
} catch (URISyntaxException e) {
|
} catch (URISyntaxException e) {
|
||||||
showNotification(getText(R.string.server_connection_error), false);
|
showNotification(getText(R.string.server_connection_error), false);
|
||||||
// Log.e(TAG, "Failed to connect to sockets server " + SERVER_ADDRESS, e);
|
Log.e(TAG, "Failed to connect to sockets server " + SERVER_ADDRESS, e);
|
||||||
}
|
}
|
||||||
showNotification(getText(R.string.connected), false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getPrioritySetting() {
|
private int getPrioritySetting() {
|
||||||
|
@ -170,11 +214,11 @@ 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");
|
||||||
//TODO: Turn off location updates
|
//TODO: Turn off location updates
|
||||||
|
|
||||||
} 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()) {
|
||||||
|
@ -200,7 +244,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());
|
||||||
|
@ -214,7 +258,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), false);
|
showNotification(getText(R.string.google_connection_error), false);
|
||||||
buildGoogleApiClient();
|
buildGoogleApiClient();
|
||||||
}
|
}
|
||||||
|
@ -223,11 +267,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), true);
|
showNotification(getString(R.string.realtime_updates), true);
|
||||||
} 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), false);
|
showNotification(getString(R.string.occasional_updates), false);
|
||||||
}
|
}
|
||||||
|
@ -237,56 +281,45 @@ public class LocationService extends Service implements GoogleApiClient.Connecti
|
||||||
@Override
|
@Override
|
||||||
public void onLocationChanged(Location location) {
|
public void onLocationChanged(Location location) {
|
||||||
|
|
||||||
// Check for internet connectivity
|
JSONObject mLocationView = new JSONObject();
|
||||||
ConnectivityManager cm =
|
try {
|
||||||
(ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);
|
mLocationView.put("usr", mUserID);
|
||||||
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
|
mLocationView.put("tok", mUserSK);
|
||||||
boolean isConnected = activeNetwork != null &&
|
mLocationView.put("lat", String.valueOf(location.getLatitude()));
|
||||||
activeNetwork.isConnectedOrConnecting();
|
mLocationView.put("lon", String.valueOf(location.getLongitude()));
|
||||||
|
mLocationView.put("dir", String.valueOf(location.getBearing()));
|
||||||
if (isConnected) {
|
mLocationView.put("spd", String.valueOf(location.getSpeed()));
|
||||||
JSONObject mLocationView = new JSONObject();
|
} catch (JSONException e) {
|
||||||
try {
|
Log.e(TAG, "Failed to put JSON data");
|
||||||
mLocationView.put("usr", mUserID);
|
|
||||||
mLocationView.put("tok", mUserSK);
|
|
||||||
mLocationView.put("lat", String.valueOf(location.getLatitude()));
|
|
||||||
mLocationView.put("lon", String.valueOf(location.getLongitude()));
|
|
||||||
mLocationView.put("dir", String.valueOf(location.getBearing()));
|
|
||||||
mLocationView.put("spd", String.valueOf(location.getSpeed()));
|
|
||||||
} catch (JSONException e) {
|
|
||||||
// Log.e(TAG, "Failed to put JSON data");
|
|
||||||
}
|
|
||||||
mSocket.emit("app", mLocationView);
|
|
||||||
// Log.v(TAG, "Location updated: " + mLocationView.toString());
|
|
||||||
|
|
||||||
} else {
|
|
||||||
showNotification(getString(R.string.not_connected), false);
|
|
||||||
}
|
}
|
||||||
|
socket.emit("set", mLocationView);
|
||||||
|
Log.v(TAG, "Location updated: " + mLocationView.toString());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@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), false);
|
showNotification(getText(R.string.google_connection_error), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
// Log.d(TAG, "onDestroy executed");
|
Log.d(TAG, "onDestroy executed");
|
||||||
|
|
||||||
mSocket.disconnect();
|
socket.disconnect();
|
||||||
// Log.d(TAG, "Disconnected from sockets");
|
socket.off("activate", onActivate);
|
||||||
|
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), false);
|
showNotification(getText(R.string.disconnected), false);
|
||||||
// Log.d(TAG, "Notification changed");
|
Log.d(TAG, "Notification changed");
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -47,10 +47,15 @@ import okhttp3.TlsVersion;
|
||||||
public class LoginActivity extends AppCompatActivity implements
|
public class LoginActivity extends AppCompatActivity implements
|
||||||
GoogleApiClient.OnConnectionFailedListener,
|
GoogleApiClient.OnConnectionFailedListener,
|
||||||
View.OnClickListener {
|
View.OnClickListener {
|
||||||
private static final String TAG = "LoginActivity";
|
// private static final String TAG = "LoginActivity";
|
||||||
private static final int RC_SIGN_IN = 9001;
|
private static final int RC_SIGN_IN = 9001;
|
||||||
|
|
||||||
|
// Development
|
||||||
private final String SERVER_ADDRESS = "https://dev.tracman.org/";
|
private final String SERVER_ADDRESS = "https://dev.tracman.org/";
|
||||||
private static final String GOOGLE_WEB_CLIENT_ID = "483494341936-hrn0ms1tebgdtfs5f4i6ebmkt3qmo16o.apps.googleusercontent.com";
|
private static final String GOOGLE_WEB_CLIENT_ID = "483494341936-hps4p2pcu3ctshjvqm3pqdbg0t0q281o.apps.googleusercontent.com";
|
||||||
|
// Production
|
||||||
|
// private final String SERVER_ADDRESS = "https://tracman.org/";
|
||||||
|
// private static final String GOOGLE_WEB_CLIENT_ID = "483494341936-hrn0ms1tebgdtfs5f4i6ebmkt3qmo16o.apps.googleusercontent.com";
|
||||||
|
|
||||||
private GoogleApiClient mGoogleApiClient;
|
private GoogleApiClient mGoogleApiClient;
|
||||||
private ProgressDialog mProgressDialog;
|
private ProgressDialog mProgressDialog;
|
||||||
|
@ -158,7 +163,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 server: " + SERVER_ADDRESS + "auth/google/idtoken?id_token=" + token);
|
// Log.e(TAG, "Failed to connect to server: " + SERVER_ADDRESS + "auth/google/idtoken?id_token=" + token);
|
||||||
showError(R.string.server_connection_error);
|
showError(R.string.server_connection_error);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,8 +34,8 @@ import java.util.List;
|
||||||
* API Guide</a> for more information on developing a Settings UI.
|
* API Guide</a> for more information on developing a Settings UI.
|
||||||
*/
|
*/
|
||||||
public class SettingsActivity extends AppCompatPreferenceActivity {
|
public class SettingsActivity extends AppCompatPreferenceActivity {
|
||||||
// private static final String TAG = "SettingsActivity";
|
private static final String TAG = "SettingsActivity";
|
||||||
private static int MY_FINE_LOCATION_PERMISSION = 425;
|
private static final int MY_FINE_LOCATION_PERMISSION = 425;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A preference value change listener that updates the preference's summary
|
* A preference value change listener that updates the preference's summary
|
||||||
|
@ -145,8 +145,28 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
// Log.d(TAG, "onStop called");
|
Log.d(TAG, "onStop called");
|
||||||
super.onStop();
|
super.onStop();
|
||||||
|
|
||||||
|
// Restart service so settings can take effect
|
||||||
|
stopService(new Intent(this, LocationService.class));
|
||||||
|
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
|
if (sharedPref.getBoolean("gps_switch", false)) {
|
||||||
|
|
||||||
|
// Ask for location permissions (can't be done in service, only activity)
|
||||||
|
if (!LocationService.checkLocationPermission(this)) {
|
||||||
|
ActivityCompat.requestPermissions(
|
||||||
|
this,
|
||||||
|
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
|
||||||
|
MY_FINE_LOCATION_PERMISSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start location tracking service
|
||||||
|
// Log.d(TAG, "Starting LocationService");
|
||||||
|
startService(new Intent(this, LocationService.class));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -209,6 +229,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
|
||||||
*/
|
*/
|
||||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||||
public static class GeneralPreferenceFragment extends PreferenceFragment {
|
public static class GeneralPreferenceFragment extends PreferenceFragment {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<string name="app_name" translatable="false">Tracman</string>
|
<string name="app_name" translatable="false">Tracman</string>
|
||||||
<string name="app_address" translatable="false">us.keithirwin.tracman</string>
|
<string name="app_address" translatable="false">us.keithirwin.tracman</string>
|
||||||
<string name="version_code" translatable="false">10</string>
|
<string name="version_code" translatable="false">10</string>
|
||||||
<string name="version" translatable="false">0.2.0</string>
|
<string name="version" translatable="false">0.5.0</string>
|
||||||
|
|
||||||
<string name="loading">Loading…</string>
|
<string name="loading">Loading…</string>
|
||||||
<string name="logo_description" translatable="false">[T]</string>
|
<string name="logo_description" translatable="false">[T]</string>
|
||||||
|
|
Loading…
Reference in New Issue