diff --git a/AndroidXperiment/.gitignore b/AndroidXperiment/.gitignore new file mode 100644 index 0000000..afbdab3 --- /dev/null +++ b/AndroidXperiment/.gitignore @@ -0,0 +1,6 @@ +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build diff --git a/AndroidXperiment/.idea/.name b/AndroidXperiment/.idea/.name new file mode 100644 index 0000000..6415b32 --- /dev/null +++ b/AndroidXperiment/.idea/.name @@ -0,0 +1 @@ +AndroidXperiment \ No newline at end of file diff --git a/AndroidXperiment/.idea/compiler.xml b/AndroidXperiment/.idea/compiler.xml new file mode 100644 index 0000000..217af47 --- /dev/null +++ b/AndroidXperiment/.idea/compiler.xml @@ -0,0 +1,23 @@ + + + + + + diff --git a/AndroidXperiment/.idea/copyright/profiles_settings.xml b/AndroidXperiment/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/AndroidXperiment/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/AndroidXperiment/.idea/encodings.xml b/AndroidXperiment/.idea/encodings.xml new file mode 100644 index 0000000..e206d70 --- /dev/null +++ b/AndroidXperiment/.idea/encodings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/AndroidXperiment/.idea/gradle.xml b/AndroidXperiment/.idea/gradle.xml new file mode 100644 index 0000000..2cbb09b --- /dev/null +++ b/AndroidXperiment/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + diff --git a/AndroidXperiment/.idea/misc.xml b/AndroidXperiment/.idea/misc.xml new file mode 100644 index 0000000..59436c9 --- /dev/null +++ b/AndroidXperiment/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/AndroidXperiment/.idea/modules.xml b/AndroidXperiment/.idea/modules.xml new file mode 100644 index 0000000..3be096e --- /dev/null +++ b/AndroidXperiment/.idea/modules.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/AndroidXperiment/.idea/scopes/scope_settings.xml b/AndroidXperiment/.idea/scopes/scope_settings.xml new file mode 100644 index 0000000..922003b --- /dev/null +++ b/AndroidXperiment/.idea/scopes/scope_settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/AndroidXperiment/.idea/vcs.xml b/AndroidXperiment/.idea/vcs.xml new file mode 100644 index 0000000..def6a6a --- /dev/null +++ b/AndroidXperiment/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/AndroidXperiment/AndroidXperiment.iml b/AndroidXperiment/AndroidXperiment.iml new file mode 100644 index 0000000..0bb6048 --- /dev/null +++ b/AndroidXperiment/AndroidXperiment.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + diff --git a/AndroidXperiment/app/.gitignore b/AndroidXperiment/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/AndroidXperiment/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/AndroidXperiment/app/app.iml b/AndroidXperiment/app/app.iml new file mode 100644 index 0000000..c9b9d1c --- /dev/null +++ b/AndroidXperiment/app/app.iml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AndroidXperiment/app/build.gradle b/AndroidXperiment/app/build.gradle new file mode 100644 index 0000000..5049bce --- /dev/null +++ b/AndroidXperiment/app/build.gradle @@ -0,0 +1,25 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 21 + buildToolsVersion "21.1.2" + + defaultConfig { + applicationId "com.dalva24.androidxperiment" + minSdkVersion 17 + targetSdkVersion 21 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + compile 'com.android.support:appcompat-v7:21.0.3' +} diff --git a/AndroidXperiment/app/proguard-rules.pro b/AndroidXperiment/app/proguard-rules.pro new file mode 100644 index 0000000..8af917e --- /dev/null +++ b/AndroidXperiment/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in D:\Programs\Android SDK/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/AndroidXperiment/app/src/androidTest/java/com/dalva24/androidxperiment/ApplicationTest.java b/AndroidXperiment/app/src/androidTest/java/com/dalva24/androidxperiment/ApplicationTest.java new file mode 100644 index 0000000..69a197c --- /dev/null +++ b/AndroidXperiment/app/src/androidTest/java/com/dalva24/androidxperiment/ApplicationTest.java @@ -0,0 +1,13 @@ +package com.dalva24.androidxperiment; + +import android.app.Application; +import android.test.ApplicationTestCase; + +/** + * Testing Fundamentals + */ +public class ApplicationTest extends ApplicationTestCase { + public ApplicationTest() { + super(Application.class); + } +} \ No newline at end of file diff --git a/AndroidXperiment/app/src/main/AndroidManifest.xml b/AndroidXperiment/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..aa54053 --- /dev/null +++ b/AndroidXperiment/app/src/main/AndroidManifest.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AndroidXperiment/app/src/main/java/com/dalva24/androidxperiment/MainActivity.java b/AndroidXperiment/app/src/main/java/com/dalva24/androidxperiment/MainActivity.java new file mode 100644 index 0000000..7ce124a --- /dev/null +++ b/AndroidXperiment/app/src/main/java/com/dalva24/androidxperiment/MainActivity.java @@ -0,0 +1,217 @@ +package com.dalva24.androidxperiment; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.ActivityNotFoundException; +import android.content.DialogInterface; +import android.content.Intent; +import android.hardware.Sensor; +import android.hardware.SensorEvent; +import android.hardware.SensorEventListener; +import android.hardware.SensorManager; +import android.net.Uri; +import android.os.AsyncTask; +import android.support.v7.app.ActionBarActivity; +import android.os.Bundle; +import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.animation.Animation; +import android.view.animation.RotateAnimation; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + + +public class MainActivity extends ActionBarActivity implements SensorEventListener { + + private ImageView imgCompass; + private float currentDegree = 0f; + private SensorManager mSensorManager; + TextView tvHeading; + + String token; + String responseCode; + static final String ACTION_SCAN = "com.google.zxing.client.android.SCAN"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + imgCompass = (ImageView) findViewById(R.id.imgCompass); + tvHeading = (TextView) findViewById(R.id.tvHeading); + mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); + } + + @Override + protected void onResume() { + super.onResume(); + mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME); + } + + @Override + protected void onPause() { + super.onPause(); + mSensorManager.unregisterListener(this); + } + + @Override + public void onSensorChanged(SensorEvent event) { + // get the angle around the z-axis rotated + float degree = Math.round(event.values[0]); + tvHeading.setText("Bearing: " + Float.toString(degree)); + + // create a rotation animation (reverse turn degree degrees) + RotateAnimation ra = new RotateAnimation( + currentDegree, + -degree, + Animation.RELATIVE_TO_SELF, 0.5f, + Animation.RELATIVE_TO_SELF, + 0.5f); + + // how long the animation will take place + ra.setDuration(210); + + // set the animation after the end of the reservation status + ra.setFillAfter(true); + + // Start the animation + imgCompass.startAnimation(ra); + currentDegree = -degree; + } + + /*@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); + }*/ + + @Override + public void onAccuracyChanged(Sensor sensor, int accuracy) { + //nop + } + + public void initQR(View v) { + try { + //start the scanning activity from the com.google.zxing.client.android.SCAN intent + Intent intent = new Intent(ACTION_SCAN); + intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); + startActivityForResult(intent, 0); + } catch (ActivityNotFoundException anfe) { + //on catch, show the download dialog + showDialog(MainActivity.this, "No Scanner Found", "Download a scanner code activity?", "Yes", "No").show(); + } + } + + private static AlertDialog showDialog(final Activity act, CharSequence title, CharSequence message, CharSequence buttonYes, CharSequence buttonNo) { + AlertDialog.Builder downloadDialog = new AlertDialog.Builder(act); + downloadDialog.setTitle(title); + downloadDialog.setMessage(message); + downloadDialog.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialogInterface, int i) { + Uri uri = Uri.parse("market://search?q=pname:" + "com.google.zxing.client.android"); + Intent intent = new Intent(Intent.ACTION_VIEW, uri); + try { + act.startActivity(intent); + } catch (ActivityNotFoundException anfe) { + + } + } + }); + downloadDialog.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialogInterface, int i) { + } + }); + return downloadDialog.show(); + } + + public void onActivityResult(int requestCode, int resultCode, Intent intent) { + if (requestCode == 0) { + if (resultCode == RESULT_OK) { + //get the extras that are returned from the intent + String contents = intent.getStringExtra("SCAN_RESULT"); + String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); + Toast toast = Toast.makeText(this, "Scanned Content:" + contents + " Format:" + format, Toast.LENGTH_SHORT); + toast.show(); + token = contents; + new PostCatch().execute(); + } + } + } + + public class PostCatch extends AsyncTask { + + @Override + protected String doInBackground(Void... params) { + JSONObject json = new JSONObject(); + String url = "http://167.205.32.46/pbd/api/catch"; + String postMsg; + String result = ""; + HttpClient client = new DefaultHttpClient(); + HttpPost post = new HttpPost(url); + post.setHeader("Content-type","application/json"); + try { + json.put("nim","13512079"); + json.put("token",token); + postMsg = json.toString(); + + StringEntity content = new StringEntity(postMsg); + post.setEntity(content); + + HttpResponse response = client.execute(post); + + BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); + String line = ""; + + while ((line = rd.readLine()) != null) { + result+=line; + } + + json = new JSONObject(result); + responseCode = json.getInt("code") + " " + json.getString("message"); + + Log.i("Response", responseCode); + + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + @Override + protected void onPostExecute(String params) { + // show response from server in Toast + Toast toast = Toast.makeText(getApplicationContext(), "Server Response: " + responseCode, Toast.LENGTH_SHORT); + toast.show(); + } + + } +} diff --git a/AndroidXperiment/app/src/main/res/drawable/compass.png b/AndroidXperiment/app/src/main/res/drawable/compass.png new file mode 100644 index 0000000..e0fca7c Binary files /dev/null and b/AndroidXperiment/app/src/main/res/drawable/compass.png differ diff --git a/AndroidXperiment/app/src/main/res/layout/activity_main.xml b/AndroidXperiment/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..afbf6a6 --- /dev/null +++ b/AndroidXperiment/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,71 @@ + + + + + + + +