Прикрепление изображений с помощью Google Mirror API из Android не работает
Я пытаюсь вставить статическую карту в Google Glass Timeline, используя клиентскую библиотеку Java. Он отлично работает для текста и пунктов меню с прикрепленными значками, но не удается, когда я пытаюсь добавить элемент мультимедиа.
Когда я вставляю метаданные и вложение, на карте временной шкалы отображаются только метаданные.
service.timeline().insert(timelineItem, mediaContent).setOauthToken((String) userToken).execute();
Когда я отдельно вставляю метаданные и изображение, отображаются только метаданные, и я получаю 404 Not Found Error.
service.timeline().insert(timelineItem).setOauthToken((String) userToken).execute();
service.timeline().attachments().insert(itemId, mediaContent).setOauthToken((String) userToken).execute();
Это мой код:
import com.google.api.client.extensions.android.json.AndroidJsonFactory;
import com.google.api.client.http.InputStreamContent;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.services.mirror.Mirror;
import com.google.api.services.mirror.model.MenuItem;
import com.google.api.services.mirror.model.MenuValue;
import com.google.api.services.mirror.model.TimelineItem;
protected String doInBackground(Object... params) {
String message = "hello world!";
String appName = "MyApp";
String contentType = "";
String itemId = "21341234";
InputStream attachmentIS = null;
String htmlMessage = "<article>\n <section>\n <p class=\"text-auto-size\"> "
+ message + " </p>\n <p>\n </section>\n<footer>"
+ appName + "</footer></p> </article>\n";
Mirror service = new Mirror.Builder(new NetHttpTransport(), new AndroidJsonFactory(), null)
.setApplicationName(appName).build();
try {
URL url = new URL("http://www.iconhot.com/icon/png/halloween-2009/256/cat-2.png");
attachmentIS = url.openStream();
//get content type
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("HEAD");
connection.connect();
contentType = connection.getContentType();
Log.d("contentType", contentType);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
InputStreamContent mediaContent = new InputStreamContent(contentType, attachmentIS);
//Add Menu Items
List<MenuItem> menuItemList = new ArrayList<MenuItem>();
menuItemList.add(new MenuItem().setAction("DELETE"));
List<MenuValue> menuValues = new ArrayList<MenuValue>();
menuValues.add(new MenuValue().setIconUrl("http://www.iconhot.com/icon/png/halloween-2009/256/cat-2.png")
.setDisplayName("Drill In"));
menuItemList.add(new MenuItem().setValues(menuValues).setId("drill").setAction("CUSTOM"));
//Create Timeline Item
TimelineItem timelineItem = new TimelineItem();
timelineItem.setHtml(htmlMessage);
timelineItem.setMenuItems(menuItemList);
timelineItem.setId(itemId);
try{
if (contentType != null && contentType.length() > 0) {
service.timeline().insert(timelineItem, mediaContent).setOauthToken((String) params[0]).execute();
//service.timeline().insert(timelineItem).setOauthToken((String) params[0]).execute();
//service.timeline().attachments().insert(itemId, mediaContent).setOauthToken((String) params[0]).execute();
return "success";
}
return "failure";
}
catch (Exception e) {
Log.d("Failure", e.getMessage());
return "failure";
}
}
Можно ли в принципе прикреплять изображения с помощью Mirror Api из приложения для Android? Большое спасибо!
1 ответ
Есть несколько проблем с вашими кодами:
timelineItem.setHtml (htmlMessage) замаскировал фоновое изображение, чтобы изображение не отображалось. Я изменил код на timelineItem.setTex(сообщение). Изображение появилось с наложением сообщения поверх него.
Код для вложения не является правильным (я думаю, что contentType был установлен неправильно), я изменил на этот код ниже. Mirror API больше не жалуется на аутентификацию. Изображение кошки хорошо видно на временной шкале.
String contentType = "image/jpeg"; InputStream attachmentIS = null; try { URL url = new URL("http://www.iconhot.com/icon/png/halloween-2009/256/cat-2.png"); attachmentIS = url.openStream(); } catch (MalformedURLException e1) { attachmentIS = null; e1.printStackTrace(); } catch (IOException e) { attachmentIS = null; e.printStackTrace(); } if (attachmentIS == null) return "failure"; InputStreamContent mediaContent = new InputStreamContent(contentType, attachmentIS); try { service.timeline().insert(timelineItem, mediaContent).setOauthToken((String) params[0]).execute(); return "success"; } catch (Exception e) { Log.d("Failure", e.getMessage()); return "failure"; }