从GDK应用程序共享图像的最简单方法是什么?

时间:2014-03-19 18:54:36

标签: google-glass google-gdk

我的GDK应用生成了一个我希望用户与其他人分享的图片。

我尝试创建一张包含图片的卡片并将其插入时间线。该卡没有共享菜单项。

我也尝试将图片添加到媒体库中,但不会产生错误,但图片没有出现在时间轴中:

Uri result = this.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, image);

最后我尝试了ACTION_SEND的意图似乎不受支持:

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);

那么正确的方法是什么?

- 修改

我尝试了一些不成功的事情:

- 上传到Amazon S3。我不能在GDK应用程序中使用Amazon .jar文件。应用程序构建但我在运行时获得了ClassNotFoundException。

- 使用JavaMail API将该图像邮寄到特定的电子邮件地址。它看起来不像JavaMail的一些必需类包含在GDK环境中。

2 个答案:

答案 0 :(得分:0)

我不知道是否存在'Share'系统菜单,但是如果你想在时间轴上推一张卡,你应该使用TimelineManager类,它允许你与Glass时间轴交互:

https://developers.google.com/glass/develop/gdk/reference/com/google/android/glass/timeline/TimelineManager#insert(com.google.android.glass.app.Card)

请注意,如果您推送静态卡或活卡,则无法使用相同的插入策略。

儒略

答案 1 :(得分:0)

好的,我想我在这里有解决方案。我可以将图像发布到服务中,然后在后端执行我需要做的任何事情。我不得不对图像内容b / c进行Base64编码,据我所知它看起来不像支持Multipart。把这个坏孩子包裹在AsyncTask中你应该好好去:

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://myservicetodothis.com/");

    byte[] contentBytes = <bytes from image go here>;

    String encodedFile = Base64.encodeToString(contentBytes, Base64.DEFAULT);
    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("fileBytes", encodedFile));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

        Log.i(TAG, "HTTP Response is : " + response);

    } catch (IOException e) {
        // TODO Auto-generated catch block
    }