diff --git a/app/src/main/java/de/trac/spherical/MainActivity.java b/app/src/main/java/de/trac/spherical/MainActivity.java index a6ea194..8cccf3e 100644 --- a/app/src/main/java/de/trac/spherical/MainActivity.java +++ b/app/src/main/java/de/trac/spherical/MainActivity.java @@ -1,23 +1,82 @@ package de.trac.spherical; import android.content.Intent; +import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; +import android.widget.TextView; +import android.widget.Toast; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; + +import de.trac.spherical.parser.SphereParser; public class MainActivity extends AppCompatActivity { public static final String TAG = "Spherical"; + public static final String INTENT_SPHERE = "application/vnd.google.panorama360+jpg"; + + private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + text = (TextView) findViewById(R.id.hello_world); + Log.d(TAG, "STARTING"); Intent intent = getIntent(); - String action = intent.getAction(); - String type = intent.getType(); + Log.d(TAG, "Intent: " + intent.getAction() + " " + intent.getType()); - Log.d(TAG, "Intent: " + action + " " + type); + switch (intent.getAction()) { + case Intent.ACTION_SEND: + handleSentImage(intent); + break; + + default: + Toast.makeText(this, R.string.prompt_share_image, Toast.LENGTH_LONG).show(); + } + } + + private void handleSentImage(Intent intent) { + String type = intent.getType(); + if (type != null) { + switch (type) { + case INTENT_SPHERE: + Uri imageUri = intent.getParcelableExtra(Intent.EXTRA_STREAM); + if (imageUri != null) { + showImage(imageUri); + } + + Toast.makeText(this, R.string.wow, Toast.LENGTH_LONG).show(); + break; + } + } else { + Toast.makeText(this, "LOL", Toast.LENGTH_SHORT).show(); + } + } + + private void showImage(Uri uri) { + try { + InputStream inputStream = getContentResolver().openInputStream(uri); + String xml = SphereParser.getXMLContent(inputStream); + + if (xml != null) { + text.setText(xml); + } else { + text.setText("null"); + } + + } catch (FileNotFoundException e) { + Log.e(TAG, "File not found.", e); + Toast.makeText(this, R.string.file_not_found, Toast.LENGTH_SHORT).show(); + } catch (IOException e) { + Log.e(TAG, "IOException: ", e); + Toast.makeText(this, R.string.ioerror, Toast.LENGTH_SHORT).show(); + } } } diff --git a/app/src/main/java/de/trac/spherical/parser/SphereParser.java b/app/src/main/java/de/trac/spherical/parser/SphereParser.java index 30d2e8d..f8e703b 100644 --- a/app/src/main/java/de/trac/spherical/parser/SphereParser.java +++ b/app/src/main/java/de/trac/spherical/parser/SphereParser.java @@ -102,7 +102,7 @@ public class SphereParser { System.out.println(getXMLContent(new FileInputStream(file))); } - public static void unread(ArrayList list, PushbackInputStream pb) throws IOException { + private static void unread(ArrayList list, PushbackInputStream pb) throws IOException { for (int i = list.size() - 1; i >= 0; i--) { pb.unread(list.get(i)); } @@ -114,11 +114,11 @@ public class SphereParser { } } - public static String hex(byte[] b) { + private static String hex(byte[] b) { return new BigInteger(b).toString(16); } - public static int integer(byte[] b) { + private static int integer(byte[] b) { return new BigInteger(b).intValue(); } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 6f3be17..27c2315 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,6 +7,7 @@ tools:context="de.trac.spherical.MainActivity"> Spherical + Share an image with the app! + File not found. + An Error has occurred: IOError. + WOW! SUCH 3D!!!