From f72d7462f8e98b2f92663c39eaffd064da2ed3a1 Mon Sep 17 00:00:00 2001 From: Sylvain Emery Date: Mon, 17 Nov 2014 17:00:42 +0100 Subject: [PATCH] added lookup of provider name resolves #2 --- .../glassnetinfo/MainActivity.java | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/app/src/main/java/com/hackncheese/glassnetinfo/MainActivity.java b/app/src/main/java/com/hackncheese/glassnetinfo/MainActivity.java index 4ce5f01..cda5188 100644 --- a/app/src/main/java/com/hackncheese/glassnetinfo/MainActivity.java +++ b/app/src/main/java/com/hackncheese/glassnetinfo/MainActivity.java @@ -60,6 +60,7 @@ public class MainActivity extends Activity { private Slider.Indeterminate mIndSlider; private GetExternalIPTask mExtTask; + private GetExternalIPInfoTask mExtInfoTask; @Override protected void onCreate(Bundle bundle) { @@ -107,6 +108,11 @@ protected void onPause() { mExtTask.cancel(true); // true = force interruption } + // cancel the async task if it exists + if (mExtInfoTask != null) { + mExtInfoTask.cancel(true); // true = force interruption + } + super.onPause(); } @@ -183,6 +189,33 @@ public String getExternalIpAddress() { } + public String getExternalIpInfoAddress(String ip) { + OkHttpClient client = new OkHttpClient(); + String NetworkProviderName = ip; + + // don't wait more than 3 seconds total + client.setConnectTimeout(1000, TimeUnit.MILLISECONDS); + client.setWriteTimeout(1000, TimeUnit.MILLISECONDS); + client.setReadTimeout(1000, TimeUnit.MILLISECONDS); + + Request request = new Request.Builder() + .url(String.format("http://ipinfo.io/%s/org", ip)) + .build(); + + try { + Response response = client.newCall(request).execute(); + String resp = response.body().string(); + int idx = resp.indexOf(" "); + if (idx > 0) { + NetworkProviderName = resp.substring(idx, resp.length()).trim(); + } + } catch (Exception e) { + Log.e(TAG, e.getMessage()); + } + return NetworkProviderName; + + } + private class GetExternalIPTask extends AsyncTask { @Override protected String doInBackground(Void... p) { @@ -210,6 +243,39 @@ protected void onPostExecute(String ip) { AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); am.playSoundEffect(Sounds.SUCCESS); + // get more info on the external IP + mExtInfoTask = new GetExternalIPInfoTask(); + mExtInfoTask.execute(ip); + + } + } + private class GetExternalIPInfoTask extends AsyncTask { + @Override + protected String doInBackground(String... ip) { + return getExternalIpInfoAddress(ip[0]); + } + + protected void onPreExecute() { + // show progress bar + mIndSlider = mSlider.startIndeterminate(); + } + + protected void onPostExecute(String networkProviderName) { + // hide the progress bar + if (mIndSlider != null) { + mIndSlider.hide(); + mIndSlider = null; + } + // add external ip to the list + ips.put("provider", networkProviderName); + // update the card info + updateCard(); + // notify that the card UI must be redrawn + mCardAdapter.notifyDataSetChanged(); + // play a nice sound + AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); + am.playSoundEffect(Sounds.SUCCESS); + } } }