Merge "android/media_sharing: Add box to enter the v-name to connect to"
diff --git a/android/app/src/main/java/io/v/x/media_sharing/MediaSharingActivity.java b/android/app/src/main/java/io/v/x/media_sharing/MediaSharingActivity.java
index e869fe0..4d7a970 100644
--- a/android/app/src/main/java/io/v/x/media_sharing/MediaSharingActivity.java
+++ b/android/app/src/main/java/io/v/x/media_sharing/MediaSharingActivity.java
@@ -4,29 +4,50 @@
package io.v.x.media_sharing;
+import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.net.Uri;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
import io.v.v23.V;
import io.v.v23.context.VContext;
public class MediaSharingActivity extends ActionBarActivity {
- // Target name must be entered manually. Go to namespace browser for the name you want to
- // connect to and copy the proxied name here.
- private static final String targetName = "";
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_media_sharing);
- VContext vContext = V.init();
+ final VContext vContext = V.init();
+ final EditText namebox = (EditText)findViewById(R.id.share_name);
+ final SharedPreferences pref = this.getPreferences(Context.MODE_PRIVATE);
+ String lastName = pref.getString(getString(R.string.preference_last_name), "");
+ namebox.setText(lastName);
+
+ final Button button = (Button)findViewById(R.id.share_button);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String name = namebox.getText().toString();
+ SharedPreferences.Editor editor = pref.edit();
+ editor.putString(getString(R.string.preference_last_name), name);
+ editor.commit();
+ onButtonClick(vContext, name);
+ MediaSharingActivity.this.finish();
+ }
+ });
+ }
+
+ protected void onButtonClick(final VContext vContext, final String targetName) {
String action = getIntent().getAction();
String type = getIntent().getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
@@ -34,10 +55,10 @@
Uri uri = (Uri)getIntent().getExtras().get(Intent.EXTRA_STREAM);
String mimeType = getIntent().getType();
- new SendMediaTask(this, vContext, targetName, uri, mimeType).execute();
+ new SendMediaTask(MediaSharingActivity.this, vContext, targetName, uri, mimeType).execute();
} else if ("text/plain".equals(type)) {
String url = (String)getIntent().getExtras().get(Intent.EXTRA_TEXT);
- new SendUrlTask(vContext, targetName, url).execute();
+ new SendUrlTask(this, vContext, targetName, url).execute();
}
}
}
diff --git a/android/app/src/main/java/io/v/x/media_sharing/SendMediaTask.java b/android/app/src/main/java/io/v/x/media_sharing/SendMediaTask.java
index 464a332..cd0b84f 100644
--- a/android/app/src/main/java/io/v/x/media_sharing/SendMediaTask.java
+++ b/android/app/src/main/java/io/v/x/media_sharing/SendMediaTask.java
@@ -7,6 +7,8 @@
import android.app.Activity;
import android.net.Uri;
import android.os.AsyncTask;
+import android.util.Log;
+import android.widget.Toast;
import org.apache.commons.io.IOUtils;
@@ -23,6 +25,8 @@
* Background task to stream media without blocking the UI thread.
*/
public class SendMediaTask extends AsyncTask<Void, Void, Void> {
+ private static final String TAG = "SendMediaTask";
+
Activity activity;
VContext vContext;
String targetName;
@@ -55,10 +59,26 @@
ClientByteOutputStream os = new ClientByteOutputStream(stream);
IOUtils.copy(is, os);
stream.finish();
+
+ Log.i(TAG, activity.getString(R.string.share_messsage_success));
+ activity.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Toast.makeText(activity, R.string.share_messsage_success, Toast.LENGTH_LONG).show();
+ }
+ });
return null;
- } catch (IOException e) {
- throw new RuntimeException(e);
- } catch (VException e) {
+ } catch (IOException|VException e) {
+ final String errorMessage = activity.getString(R.string.share_messsage_error) + ": " + e.toString();
+ Log.e(TAG, errorMessage);
+
+ activity.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Toast.makeText(activity, errorMessage, Toast.LENGTH_LONG).show();
+ }
+ });
+
throw new RuntimeException(e);
}
}
diff --git a/android/app/src/main/java/io/v/x/media_sharing/SendUrlTask.java b/android/app/src/main/java/io/v/x/media_sharing/SendUrlTask.java
index 8dc4723..705d18c 100644
--- a/android/app/src/main/java/io/v/x/media_sharing/SendUrlTask.java
+++ b/android/app/src/main/java/io/v/x/media_sharing/SendUrlTask.java
@@ -4,7 +4,10 @@
package io.v.x.media_sharing;
+import android.app.Activity;
import android.os.AsyncTask;
+import android.util.Log;
+import android.widget.Toast;
import io.v.v23.OptionDefs;
import io.v.v23.Options;
@@ -15,11 +18,15 @@
* Background task to send a URL without blocking the UI thread.
*/
public class SendUrlTask extends AsyncTask<Void, Void, Void> {
+ private final static String TAG = "SendMediaTask";
+
+ Activity activity;
VContext vContext;
String targetName;
String url;
- public SendUrlTask(VContext vContext, String targetName, String url) {
+ public SendUrlTask(Activity activity, VContext vContext, String targetName, String url) {
+ this.activity = activity;
this.vContext = vContext;
this.targetName = targetName;
this.url = url;
@@ -36,8 +43,24 @@
opts.set(OptionDefs.SKIP_SERVER_ENDPOINT_AUTHORIZATION, true);
client.displayUrl(vContext, url, opts);
+
+ Log.i(TAG, activity.getString(R.string.share_messsage_success));
+ activity.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Toast.makeText(activity, R.string.share_messsage_success, Toast.LENGTH_LONG).show();
+ }
+ });
return null;
} catch (VException e) {
+ final String errorMessage = activity.getString(R.string.share_messsage_error) + ": " + e.toString();
+ Log.e(TAG, errorMessage);
+ activity.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Toast.makeText(activity, errorMessage, Toast.LENGTH_LONG).show();
+ }
+ });
throw new RuntimeException(e);
}
}
diff --git a/android/app/src/main/res/layout/fragment_media_sharing.xml b/android/app/src/main/res/layout/fragment_media_sharing.xml
index 8bd2c36..10396fe 100644
--- a/android/app/src/main/res/layout/fragment_media_sharing.xml
+++ b/android/app/src/main/res/layout/fragment_media_sharing.xml
@@ -1,12 +1,31 @@
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
+ android:orientation="vertical"
tools:context="io.v.x.media_sharing.MediaSharingActivityFragment">
- <TextView android:text="@string/media_sharing_message" android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
+ <TextView android:text="@string/media_sharing_message"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/share_message" />
-</RelativeLayout>
+
+ <EditText
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/share_name"
+ android:layout_weight="1.23"
+ android:layout_gravity="center_vertical" />
+
+
+ <Button
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/button_text"
+ android:id="@+id/share_button"
+ android:layout_gravity="bottom" />
+
+</LinearLayout>
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 6f4eb76..647d7c9 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -2,5 +2,9 @@
<string name="app_name">MediaSharing</string>
<string name="title_activity_media_sharing">Media Sharing</string>
<string name="action_settings">Settings</string>
- <string name="media_sharing_message">Sharing Media...</string>
+ <string name="media_sharing_message">Vanadium Name to Share To:</string>
+ <string name="button_text">Share</string>
+ <string name="preference_last_name"></string>
+ <string name="share_messsage_success">Share succeeded</string>
+ <string name="share_messsage_error">Error sharing</string>
</resources>