package henry.OpenLocate;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.AsyncTask;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.os.Build;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;
public class MainActivity extends ActionBarActivity implements ConnectionCallbacks, OnConnectionFailedListener {
private static final String TAG = "Locate";
private GoogleApiClient mGoogleApiClient;
public static final String PREFS = "Settings" ;
public static final String URL = "urlKey";
public static final String Phone = "phoneKey";
public static final String Email = "emailKey";
public static final String Street = "streetKey";
public static final String Place = "placeKey";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences settings = getSharedPreferences(PREFS, 4);
String authkey = settings.getString("authkey","");
if (authkey == "") {
/* mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();*/
}
else {
Log.v(TAG,"GPS LAUNCH");
Intent i = new Intent(getApplicationContext(), GPSActivity.class);
startActivity(i); }
}
public void onStart() {
super.onStart();
Log.d(TAG, "onStart fired ..............");
// mGoogleApiClient.connect();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void connectAccount(View view) {
final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
final String tmDevice, tmSerial, androidId, deviceModel;
deviceModel = Build.MODEL;
tmDevice = "" + tm.getDeviceId();
tmSerial = "" + tm.getSimSerialNumber();
androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
UUID deviceUuid = new UUID(androidId.hashCode(), ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());
String deviceId = deviceUuid.toString();
Log.v(TAG, deviceId);
Log.v(TAG, deviceModel);
String postParameters, email, password, serverURL, model, deviceid, lat, longitude;
EditText txtEmail, txtPassword, txtURL;
txtEmail = (EditText) this.findViewById(R.id.txtEmail);
txtPassword = (EditText) this.findViewById(R.id.txtPassword);
txtURL = (EditText) this.findViewById(R.id.txtURL);
email = txtEmail.getText().toString();
password = txtPassword.getText().toString();
serverURL = txtURL.getText().toString();
Uri.Builder builder = new Uri.Builder()
.appendQueryParameter("deviceid", deviceId)
.appendQueryParameter("model", deviceModel)
.appendQueryParameter("password", password)
.appendQueryParameter("email", email);
String query = builder.build().getEncodedQuery();
new RegisterApplication().execute(query,serverURL);
/* try {
url = new URL("http://127.0.0.1/");
} catch (MalformedURLException e) {
e.printStackTrace();
}
HttpURLConnection urlConnection = null;
try {
urlConnection = (HttpURLConnection) url.openConnection();
} catch (IOException e) {
e.printStackTrace();
}*/
/* try {
urlConnection.setReadTimeout(10000);
urlConnection.setConnectTimeout(15000);
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
URL url1 = new URL("http://www.google.com/");
HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
Uri.Builder builder = new Uri.Builder()
.appendQueryParameter("deviceid", deviceId)
.appendQueryParameter("model", deviceModel)
.appendQueryParameter("password", password)
.appendQueryParameter("lat", lat)
.appendQueryParameter("long", longitude)
.appendQueryParameter("email", email);
String query = builder.build().getEncodedQuery();
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();
conn.connect();*/
/* List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("deviceid", deviceId));
params.add(new BasicNameValuePair("model", deviceModel));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("password", password));
params.add(new BasicNameValuePair("lat", lat));
params.add(new BasicNameValuePair("long", longitude));
// read the response
System.out.println("Response Code: " + conn.getResponseCode());
InputStream in = new BufferedInputStream(conn.getInputStream());
String response = IOUtils.toString(in, "UTF-8");
System.out.println(response);
*/
// urlConnection.setFixedLengthStreamingMode(
// params.toString().getBytes().length);
// try (OutputStream output = urlConnection.getOutputStream()) {
// output.write(getQuery(params));
//}
/* } catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
*/
}
private class RegisterApplication extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
// params comes from the execute() call: params[0] is the url.
try {
URL url1 = new URL(params[1] + "/device");
Log.v(TAG, "0");
HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
Log.v(TAG, "1");
Log.v(TAG, params[0]);
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
// conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = null;
os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
Log.v(TAG, "2");
writer.write(params[0]);
Log.v(TAG, "3");
writer.flush();
writer.close();
os.close();
Log.v(TAG, "4");
conn.connect();
Log.v(TAG, "5");
InputStream stream = null;
stream = conn.getInputStream();
String content = "";
BufferedReader r = new BufferedReader(new InputStreamReader(stream));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line);
}
Log.i(TAG, String.valueOf(total));
content = String.valueOf(total);
if (content.contains("authkey")) {
Log.v(TAG, "Success");
String authkey = content.split(",")[0];
String email = content.split(",")[1];
authkey = authkey.replace("authkey=","");
email = email.replace("email=","");
SharedPreferences sharedPref = getSharedPreferences(PREFS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("authkey", authkey);
Log.v(TAG,authkey);
editor.putString("email", email);
editor.putString("url", params[1]);
editor.commit();
}
return content;
} catch (IOException e) {
return "Unable to retrieve web page. URL may be invalid." + e.getMessage();
}
}
protected void onPostExecute(String result) {
if (result.contains("authkey")) {
Log.i(TAG,result);
Context context = getApplicationContext();
CharSequence text = "Successfully connected phone!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
Intent i = new Intent(getApplicationContext(), GPSActivity.class);
startActivity(i);
} else {
Context context = getApplicationContext();
CharSequence text = result;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
}
// Reads an InputStream and converts it to a String.
public String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException {
Reader reader = null;
reader = new InputStreamReader(stream, "UTF-8");
char[] buffer = new char[len];
reader.read(buffer);
return new String(buffer);
}
/* // onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(String result) {
Log.v(TAG, result);
}*/
@Override
public void onConnected(Bundle bundle) {
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
}