Commit 83f59424 authored by Mattia Ducci's avatar Mattia Ducci

modificate alcune chiavi per il server, controlli su appContext e SharedPrefs...

modificate alcune chiavi per il server, controlli su appContext e SharedPrefs senza le quali non viene fatta la chiamata con Volley, UUID nelle SharedPreferences in modo che sia unico per ogni utente ad ogni installazione dell'app
parent 4a6ea649
...@@ -38,6 +38,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -38,6 +38,7 @@ public class MainActivity extends AppCompatActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
//IMP! settare all'stanza di Icarus un applicationContext e delle SharedPreferences
instance=Icarus.getInstance(MainActivity.this); instance=Icarus.getInstance(MainActivity.this);
instance.setApplicationContext(getApplicationContext()); instance.setApplicationContext(getApplicationContext());
...@@ -50,6 +51,8 @@ public class MainActivity extends AppCompatActivity { ...@@ -50,6 +51,8 @@ public class MainActivity extends AppCompatActivity {
lastBoolPref=myPrefs.getBoolean("boolPref",false); lastBoolPref=myPrefs.getBoolean("boolPref",false);
lastIntPref=myPrefs.getInt("intPref",-1); lastIntPref=myPrefs.getInt("intPref",-1);
instance.setCallerSharedPrefs(myPrefs);
//setto gli switch in base allo stato nelle shared preferences //setto gli switch in base allo stato nelle shared preferences
if(lastBoolPref) boolPrefSwitch.setChecked(true); if(lastBoolPref) boolPrefSwitch.setChecked(true);
else boolPrefSwitch.setChecked(false); else boolPrefSwitch.setChecked(false);
...@@ -114,7 +117,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -114,7 +117,7 @@ public class MainActivity extends AppCompatActivity {
if(eventLabelEditText.getText().length()==0) eventLabel = EventTrackResource.EventLabel.FOREGROUND.name().toLowerCase(); if(eventLabelEditText.getText().length()==0) eventLabel = EventTrackResource.EventLabel.FOREGROUND.name().toLowerCase();
else eventLabel=eventLabelEditText.getText().toString(); else eventLabel=eventLabelEditText.getText().toString();
if(mostProbableActivityEditText.getText().length()==0) mostProbableActivity="activityProva"; if(mostProbableActivityEditText.getText().length()==0) mostProbableActivity="running";
else mostProbableActivity=mostProbableActivityEditText.getText().toString(); else mostProbableActivity=mostProbableActivityEditText.getText().toString();
EventTrackResource eventTrackResource=new EventTrackResource(eventName,eventCategory,eventLabel,90,90,5, EventTrackResource eventTrackResource=new EventTrackResource(eventName,eventCategory,eventLabel,90,90,5,
......
...@@ -46,6 +46,7 @@ public class Icarus { ...@@ -46,6 +46,7 @@ public class Icarus {
private Context appContext;// serve per istanziare un un'unica coda di richieste Volley (e non averne una per Activity) private Context appContext;// serve per istanziare un un'unica coda di richieste Volley (e non averne una per Activity)
private static Context curContext; //context dell'Activity corrente private static Context curContext; //context dell'Activity corrente
private RequestQueue mVolleyRequestQueue; private RequestQueue mVolleyRequestQueue;
private SharedPreferences callerSharedPrefs;
public static Icarus getInstance(Context c) { public static Icarus getInstance(Context c) {
...@@ -67,6 +68,13 @@ public class Icarus { ...@@ -67,6 +68,13 @@ public class Icarus {
mVolleyRequestQueue= Volley.newRequestQueue(appContext); mVolleyRequestQueue= Volley.newRequestQueue(appContext);
} }
public void setCallerSharedPrefs(SharedPreferences callerSharedPrefs){
this.callerSharedPrefs=callerSharedPrefs;
}
//----------------- LOG PREFERENCE CHANGES ----------------------- //----------------- LOG PREFERENCE CHANGES -----------------------
public void logUserSettings(UserSettingsResource userSettingsResource, boolean debug){ public void logUserSettings(UserSettingsResource userSettingsResource, boolean debug){
...@@ -121,46 +129,51 @@ public class Icarus { ...@@ -121,46 +129,51 @@ public class Icarus {
postIcarusHttpRequest(eventTrackJSON,debug); postIcarusHttpRequest(eventTrackJSON,debug);
} }
//--------------------------- UTILITY ---------------------------------- //--------------------------- UTILITY ----------------------------------
private void postIcarusHttpRequest(final JSONObject icarusPayload, final boolean debug){ private void postIcarusHttpRequest(final JSONObject icarusPayload, final boolean debug){
JSONObject toSendJson=createJSONToSend(icarusPayload,debug); //aggiunge informazioni al JSON ottenuto attraverso la raccolta dati dell'utente JSONObject toSendJson=createJSONToSend(icarusPayload,debug); //aggiunge informazioni al JSON ottenuto attraverso la raccolta dati dell'utente
final JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.POST, ICARUS_URL, toSendJson, new Response.Listener<JSONObject>() { if(toSendJson==null)
@Override Log.e(curContext.getString(R.string.icarus_class),"call setCallerSharedPrefs(SharedPreferences prefs) on Icarus instance to do HTTP calls");
public void onResponse(JSONObject response) { else{
Log.d(curContext.getString(R.string.icarus_class),"onVolley response POSITIVE"); final JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.POST, ICARUS_URL, toSendJson, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//controllo se ho qualche elemento che precedentemente non sono riuscito ad inviare e nel caso lo provo ad inviare Log.d(curContext.getString(R.string.icarus_class),"onVolley response POSITIVE");
pendingResourceLock.lock();
if(pendingResources.peek() != null){ //se ho qualche elemento pendente da inviare //controllo se ho qualche elemento che precedentemente non sono riuscito ad inviare e nel caso lo provo ad inviare
pendingResourceLock.lock();
Log.d(curContext.getString(R.string.icarus_class),"messaggio pendente"); if(pendingResources.peek() != null){ //se ho qualche elemento pendente da inviare
JSONObject pendingResource=pendingResources.poll();
postIcarusHttpRequest(pendingResource,debug);
}
pendingResourceLock.unlock();
} Log.d(curContext.getString(R.string.icarus_class),"messaggio pendente");
}, new Response.ErrorListener() { JSONObject pendingResource=pendingResources.poll();
@Override postIcarusHttpRequest(pendingResource,debug);
public void onErrorResponse(VolleyError error) { }
pendingResourceLock.unlock();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(curContext.getString(R.string.icarus_class),"onVolley response NEGATIVE"); Log.d(curContext.getString(R.string.icarus_class),"onVolley response NEGATIVE");
//se per qualche motivo la richiesta http non va a buon fine, salvo il payload che avrei dovuto mandare in cache //se per qualche motivo la richiesta http non va a buon fine, salvo il payload che avrei dovuto mandare in cache
pendingResourceLock.lock(); pendingResourceLock.lock();
pendingResources.add(icarusPayload); pendingResources.add(icarusPayload);
pendingResourceLock.unlock(); pendingResourceLock.unlock();
} }
}); });
mVolleyRequestQueue.add(jsonObjectRequest);//faccio effettivamente la richiesta if(appContext!=null)
mVolleyRequestQueue.add(jsonObjectRequest);//faccio effettivamente la richiesta
else
Log.e(curContext.getString(R.string.icarus_class),"call method setApplicationContext(Context appContext) on the Icarus instance to do HTTP calls");
}
} }
public JSONObject createJSONToSend(JSONObject userData, boolean debug){ public JSONObject createJSONToSend(JSONObject userData, boolean debug){
...@@ -210,21 +223,36 @@ public class Icarus { ...@@ -210,21 +223,36 @@ public class Icarus {
Log.e(curContext.getString(R.string.icarus_class),"errore ottenere accessibilityManager"); Log.e(curContext.getString(R.string.icarus_class),"errore ottenere accessibilityManager");
} }
//controllo se nelle sharedPref dell'app chiamante è già presente un UUID, altrimenti ne creo uno che sarà costante per quell'utente
if(callerSharedPrefs==null) return null;
String uuid;
if(callerSharedPrefs.contains("userUUID"))
uuid=callerSharedPrefs.getString("userUUID","");
else {
uuid=UUID.randomUUID().toString();
//update shared preferences dell'app chiamante
SharedPreferences.Editor editor=callerSharedPrefs.edit();
editor.putString("userUUID",uuid);
editor.apply(); //apply aggiorna le prefs in bg
}
JSONObject appInfoJSON=new JSONObject(); JSONObject appInfoJSON=new JSONObject();
appInfoJSON.put("lang", Locale.getDefault().getLanguage()); appInfoJSON.put("lang", Locale.getDefault().getLanguage());
appInfoJSON.put("log_lib","Icarus:"+curContext.getResources().getInteger(R.integer.lib_version)); appInfoJSON.put("icarusversion","Icarus:"+curContext.getResources().getInteger(R.integer.lib_version));
appInfoJSON.put("appname",appName.toString()); appInfoJSON.put("appname",appName.toString());
appInfoJSON.put("appversion",clientAppVersion); appInfoJSON.put("appversion",clientAppVersion);
appInfoJSON.put("os", Build.VERSION.SDK_INT); appInfoJSON.put("osversion", Build.VERSION.SDK_INT);
appInfoJSON.put("platform","android");
appInfoJSON.put("device",getDeviceName()); appInfoJSON.put("device",getDeviceName());
appInfoJSON.put("uuid",UUID.randomUUID().toString()); appInfoJSON.put("uuid",uuid);
appInfoJSON.put("talkback",accessibilityEnabled); appInfoJSON.put("talkback",accessibilityEnabled);
//---------------- GENERAL JSON -------------------- //---------------- GENERAL JSON --------------------
toSend.put("debug",debug); toSend.put("debug",debug);
toSend.put("timestamp",timeJSON); toSend.put("timestamp",timeJSON);
toSend.put("appData",appInfoJSON); toSend.put("appdata",appInfoJSON);
toSend.put("userdata",userData); toSend.put("userdata",userData);
} catch (JSONException e) { } catch (JSONException e) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment