diff --git a/app/build.gradle b/app/build.gradle
index 1a166cd..72f336d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,15 +1,44 @@
apply plugin: 'com.android.application'
+apply plugin: 'io.fabric'
-android {
- compileSdkVersion 20
- buildToolsVersion '26.0.2'
+buildscript {
+ repositories {
+ maven { url 'https://maven.fabric.io/public' }
+ }
+
+ dependencies {
+ classpath 'io.fabric.tools:gradle:1.+'
+ }
+}
+repositories {
+ maven { url 'https://maven.fabric.io/public' }
+}
+
+android {
+ compileSdkVersion 26
+ buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.ubidots.ubidots"
- minSdkVersion 14
- targetSdkVersion 20
+ minSdkVersion 19
+ targetSdkVersion 26
versionCode 1
versionName "1.0"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ multiDexEnabled true
+ }
+ useLibrary 'org.apache.http.legacy'
+ packagingOptions {
+ exclude 'META-INF/DEPENDENCIES.txt'
+ exclude 'META-INF/LICENSE.txt'
+ exclude 'META-INF/NOTICE.txt'
+ exclude 'META-INF/NOTICE'
+ exclude 'META-INF/LICENSE'
+ exclude 'META-INF/DEPENDENCIES'
+ exclude 'META-INF/notice.txt'
+ exclude 'META-INF/license.txt'
+ exclude 'META-INF/dependencies.txt'
+ exclude 'META-INF/LGPL2.1'
}
buildTypes {
release {
@@ -20,8 +49,17 @@ android {
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.google.android.gms:play-services:5.0.89'
- compile 'com.android.support:support-v4:20.0.+'
- compile 'com.google.code.gson:gson:2.2.4'
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation 'com.android.support:appcompat-v7:26.1.0'
+ implementation 'com.android.support.constraint:constraint-layout:1.0.2'
+ implementation 'com.google.android.gms:play-services-maps:11.4.2'
+ compile 'com.google.android.gms:play-services-location:11.4.2'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'com.android.support.test:runner:1.0.1'
+ androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
+ compile group: 'com.google.code.gson', name: 'gson', version: '2.8.2'
+ compile 'org.apache.httpcomponents:httpclient-android:4.3.5'
+ compile('com.crashlytics.sdk.android:answers:1.4.1@aar') {
+ transitive = true;
+ }
}
diff --git a/app/fabric.properties b/app/fabric.properties
new file mode 100644
index 0000000..c960705
--- /dev/null
+++ b/app/fabric.properties
@@ -0,0 +1,3 @@
+#Contains API Secret used to validate your application. Commit to internal source control; avoid making secret public.
+#Mon Oct 23 19:44:05 CDT 2017
+apiSecret=
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 52f6c61..ba4ad01 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,7 +1,11 @@
-
+ package="com.ubidots.ubidots">
+
@@ -20,18 +24,15 @@
-
-
+
@@ -47,10 +48,19 @@
android:name=".UbidotsActivity"
android:label="@string/title_activity_ubidots" >
-
+
+ android:name="com.google.android.geo.API_KEY"
+ android:value="@string/google_maps_key" />
+
+
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/ubidots/ubidots/MainActivity.java b/app/src/main/java/com/ubidots/ubidots/MainActivity.java
index a481d16..f97229e 100644
--- a/app/src/main/java/com/ubidots/ubidots/MainActivity.java
+++ b/app/src/main/java/com/ubidots/ubidots/MainActivity.java
@@ -3,31 +3,40 @@
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
+import android.app.FragmentTransaction;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.v7.app.AppCompatActivity;
import com.ubidots.ubidots.fragments.BrowserFragment;
import com.ubidots.ubidots.fragments.MainFragment;
+import com.crashlytics.android.answers.Answers;
+import io.fabric.sdk.android.Fabric;
+
+//public class MainActivity extends AppCompatActivity implements MainFragment.MainFragmentButtonsInterface {
public class MainActivity extends Activity implements MainFragment.MainFragmentButtonsInterface {
// We want to know if the user has logged in before
private SharedPreferences mSharedPreferences;
private boolean mUserFirstTime;
+ private boolean isUserLoggedIn;
private FragmentManager mFragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ Fabric.with(this, new Answers());
setContentView(R.layout.activity_main);
mFragmentManager = getFragmentManager();
// Get the preference to check if the user has logged in previously
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
mUserFirstTime = mSharedPreferences.getBoolean(Constants.FIRST_TIME, true);
+ //isUserLoggedIn = mSharedPreferences.getBoolean(Constants.FIRST_TIME, false);
- if (savedInstanceState == null) {
+ /* if (savedInstanceState == null) {
if (mUserFirstTime) {
MainFragment mainFragment = new MainFragment();
getFragmentManager()
@@ -39,7 +48,37 @@ protected void onCreate(Bundle savedInstanceState) {
startActivity(ubidotsIntent);
finish();
}
+ }*/
+ /*if (savedInstanceState == null) {
+ if(!isUserLoggedIn) {
+ MainFragment mainFragment = new MainFragment();
+ FragmentManager fragmentManager = getFragmentManager();
+ FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
+ fragmentTransaction.add(R.id.fragment_container, mainFragment);
+ fragmentTransaction.commit();
+ Intent ubidotsIntent = new Intent(this, UbidotsActivity.class);
+ ubidotsIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(ubidotsIntent);
+ finish();
+ }
+
+ }
+*/
+ if (savedInstanceState == null) {
+ if (mUserFirstTime) {
+ MainFragment mainFragment = new MainFragment();
+ FragmentManager fragmentManager = getFragmentManager();
+ FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
+ fragmentTransaction.add(R.id.fragment_container, mainFragment);
+ fragmentTransaction.addToBackStack(null);
+ fragmentTransaction.commit();
+ } else {
+ Intent ubidotsIntent = new Intent(this, UbidotsActivity.class);
+ startActivity(ubidotsIntent);
+ finish();
+ }
}
+
}
// Method from MainFragment
diff --git a/app/src/main/java/com/ubidots/ubidots/UbidotsActivity.java b/app/src/main/java/com/ubidots/ubidots/UbidotsActivity.java
index cfc10fd..d65b3b0 100644
--- a/app/src/main/java/com/ubidots/ubidots/UbidotsActivity.java
+++ b/app/src/main/java/com/ubidots/ubidots/UbidotsActivity.java
@@ -3,7 +3,6 @@
import android.app.ActionBar;
import android.app.Activity;
import android.app.DialogFragment;
-
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
@@ -20,9 +19,10 @@
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Bundle;
-
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat;
+import android.support.v4.content.ContextCompat;
+import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -31,13 +31,16 @@
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;
+import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
+import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.ubidots.ubidots.fragments.ChangePushTimeFragment;
@@ -45,8 +48,7 @@
import java.lang.reflect.Field;
-public class UbidotsActivity extends Activity implements
- ChangePushTimeFragment.DialogListener {
+public class UbidotsActivity extends AppCompatActivity implements ChangePushTimeFragment.DialogListener,OnMapReadyCallback {
// Preferences
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
@@ -102,10 +104,8 @@ protected void onCreate(Bundle savedInstanceState) {
mEditor = mSharedPreferences.edit();
// Get preferences variables
- boolean firstTime =
- mSharedPreferences.getBoolean(Constants.FIRST_TIME, true);
- mAlreadyRunning =
- mSharedPreferences.getBoolean(Constants.SERVICE_RUNNING, false);
+ boolean firstTime = mSharedPreferences.getBoolean(Constants.FIRST_TIME, true);
+ mAlreadyRunning = mSharedPreferences.getBoolean(Constants.SERVICE_RUNNING, false);
mTimeToPush = mSharedPreferences.getInt(Constants.PUSH_TIME, 1);
// Set the text at the left of the Switch
@@ -124,8 +124,39 @@ protected void onCreate(Bundle savedInstanceState) {
// Check if Google Maps is installed
if (isGoogleMapsInstalled()) {
// Instantiate the fragment containing the map in the layout
- mGoogleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
-
+ //mGoogleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
+ //mGoogleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map));
+ MapFragment mapFragment = ((MapFragment) getFragmentManager().findFragmentById(R.id.map));
+ final UbidotsActivity activity = this;
+ mapFragment.getMapAsync(this);
+
+ mapFragment.getMapAsync(new OnMapReadyCallback()
+ {
+ @Override
+ public void onMapReady(GoogleMap googleMap)
+ {
+ mGoogleMap = googleMap;
+ if (mGoogleMap == null)
+ {
+ Toast.makeText(getApplicationContext(), "Unable to open Google map. Unable to continue", Toast.LENGTH_LONG).show();
+ return;
+ }
+ try
+ {
+ //For customizing styles tweak res/raw/style_json.json https://mapstyle.withgoogle.com/
+ boolean success = mGoogleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(activity, R.raw.style_json));
+ if (!success)
+ {
+ //dbglog.Log("Style parsing failed.");
+ System.out.println("Style parsing failed.");
+ }
+ } catch (Exception e)
+ {
+ //dbglog.Log("Style parsing failed.");
+ System.out.println("Style parsing failed.");
+ }
+ }
+ });
// Get the location given by the system
LocationManager location = (LocationManager) getSystemService(LOCATION_SERVICE);
@@ -152,7 +183,11 @@ public void onProviderDisabled(String provider) { }
};
// Set the listener to the location manager
- location.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
+ try {
+ location.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ }
}
// Update the text inside the button with the time to push
@@ -341,4 +376,20 @@ public void onReceive(Context context, Intent intent) {
}
}
}
+
+
+ @Override
+ public void onMapReady(GoogleMap map) {
+ // DO WHATEVER YOU WANT WITH GOOGLEMAP
+ map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
+ try {
+ map.setMyLocationEnabled(true);
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ }
+ map.setTrafficEnabled(true);
+ map.setIndoorEnabled(true);
+ map.setBuildingsEnabled(true);
+ map.getUiSettings().setZoomControlsEnabled(true);
+ }
}
diff --git a/app/src/main/java/com/ubidots/ubidots/VerificationActivity.java b/app/src/main/java/com/ubidots/ubidots/VerificationActivity.java
index 436e908..c98de0d 100644
--- a/app/src/main/java/com/ubidots/ubidots/VerificationActivity.java
+++ b/app/src/main/java/com/ubidots/ubidots/VerificationActivity.java
@@ -3,10 +3,7 @@
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
-import android.view.Menu;
-import android.view.MenuItem;
import android.view.View;
-import android.widget.Button;
import android.widget.ImageView;
diff --git a/app/src/main/java/com/ubidots/ubidots/fragments/BrowserFragment.java b/app/src/main/java/com/ubidots/ubidots/fragments/BrowserFragment.java
index 178fa3f..a6d273a 100644
--- a/app/src/main/java/com/ubidots/ubidots/fragments/BrowserFragment.java
+++ b/app/src/main/java/com/ubidots/ubidots/fragments/BrowserFragment.java
@@ -1,10 +1,10 @@
package com.ubidots.ubidots.fragments;
+import android.app.Fragment;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
-import android.app.Fragment;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
@@ -13,9 +13,9 @@
import android.webkit.WebView;
import android.webkit.WebViewClient;
-import com.ubidots.ApiClient;
-import com.ubidots.DataSource;
-import com.ubidots.Variable;
+import com.ubidots.ubidots.ApiClient;
+import com.ubidots.ubidots.DataSource;
+import com.ubidots.ubidots.Variable;
import com.ubidots.ubidots.Constants;
import com.ubidots.ubidots.R;
import com.ubidots.ubidots.VerificationActivity;
diff --git a/app/src/main/java/com/ubidots/ubidots/fragments/MainFragment.java b/app/src/main/java/com/ubidots/ubidots/fragments/MainFragment.java
index 8fb5f4f..dca7e37 100644
--- a/app/src/main/java/com/ubidots/ubidots/fragments/MainFragment.java
+++ b/app/src/main/java/com/ubidots/ubidots/fragments/MainFragment.java
@@ -1,14 +1,15 @@
package com.ubidots.ubidots.fragments;
import android.app.Activity;
-import android.os.Bundle;
import android.app.Fragment;
+import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.ubidots.ubidots.R;
+
public class MainFragment extends Fragment {
public interface MainFragmentButtonsInterface {
public void onLoginButtonClick(Fragment fragment);
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 3b40208..0923b82 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,8 +1,11 @@
\ No newline at end of file
+ tools:ignore="MergeRootFrame">
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/ubidots.xml b/app/src/main/res/menu/ubidots.xml
index dbe1584..a6e2467 100644
--- a/app/src/main/res/menu/ubidots.xml
+++ b/app/src/main/res/menu/ubidots.xml
@@ -1,14 +1,15 @@
diff --git a/app/src/main/res/raw/fontawesome.ttf b/app/src/main/res/raw/fontawesome.ttf
new file mode 100644
index 0000000..e89738d
Binary files /dev/null and b/app/src/main/res/raw/fontawesome.ttf differ
diff --git a/app/src/main/res/raw/icomoon.ttf b/app/src/main/res/raw/icomoon.ttf
new file mode 100644
index 0000000..b71c7ee
Binary files /dev/null and b/app/src/main/res/raw/icomoon.ttf differ
diff --git a/app/src/main/res/raw/style_json.json b/app/src/main/res/raw/style_json.json
new file mode 100644
index 0000000..decf590
--- /dev/null
+++ b/app/src/main/res/raw/style_json.json
@@ -0,0 +1,11 @@
+[
+ {
+ "featureType": "poi",
+ "elementType": "labels",
+ "stylers": [
+ {
+ "visibility": "off"
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/res/values/google_maps_api.xml b/app/src/main/res/values/google_maps_api.xml
new file mode 100644
index 0000000..0006c76
--- /dev/null
+++ b/app/src/main/res/values/google_maps_api.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/build.gradle b/build.gradle
index 21eeba9..f3b8a90 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,9 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
+
repositories {
+ google()
jcenter()
}
dependencies {
@@ -14,6 +16,11 @@ buildscript {
allprojects {
repositories {
+ google()
jcenter()
}
}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/ubidots-android-app.iml b/ubidots-android-app.iml
deleted file mode 100644
index 0bb6048..0000000
--- a/ubidots-android-app.iml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ubidots-android-gps-tracker.iml b/ubidots-android-gps-tracker.iml
new file mode 100644
index 0000000..09e9b8d
--- /dev/null
+++ b/ubidots-android-gps-tracker.iml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file