Я разрабатываю приложение, которое загружает видео с SD-карты на YouTube и возвращает URL-адрес видео YouTube. Однако я не смог успешно сделать это.
Я пробовал с ACTION_SEND:
public void onUploadClick(View v) {
Intent uploadIntent = new Intent(Intent.ACTION_SEND);
// In a real app, video would be captured from camera.
File f = new File("/sdcard/test.mov");
uploadIntent.setDataAndType(Uri.fromFile(f), "video/quicktime");
startActivity(Intent.createChooser(uploadIntent, "Upload"));
}
Но, как ни странно, с этой реализацией у меня нет YouTube для загрузки. У меня есть Bluetooth, Почта, Dropbox, Facebook, Flickr, Gmail и Handcent. Но не Youtube. Есть мысли по этому поводу?
Кроме того, возможно ли с помощью этого метода получить URL-адрес видео YouTube после загрузки? Как?
Я также пытался использовать Youtube API для Java, и снова безуспешно. Я добавил все необходимые библиотеки (gdata-client-1.0.jar, gdata-media-1.0.jar и gdata-youtube-2.0, jar). Однако, когда я запускаю его, я получаю NoClassDefFoundError для com.google.gdata.client.youtube.YouTubeService, несмотря на наличие правильных библиотек и импорта.
Вот код, который я использую:
YouTubeService service = new YouTubeService(clientID, developer_key);
VideoEntry newEntry = new VideoEntry();
YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup();
mg.setTitle(new MediaTitle());
mg.getTitle().setPlainTextContent("My Test Movie");
mg.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, "Autos"));
mg.setKeywords(new MediaKeywords());
mg.getKeywords().addKeyword("cars");
mg.getKeywords().addKeyword("funny");
mg.setDescription(new MediaDescription());
mg.getDescription().setPlainTextContent("My description");
mg.setPrivate(false);
mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "mydevtag"));
mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "anotherdevtag"));
newEntry.setGeoCoordinates(new GeoRssWhere(37.0,-122.0));
// alternatively, one could specify just a descriptive string
// newEntry.setLocation("Mountain View, CA");
MediaFileSource ms = new MediaFileSource(new File("file.mov"), "video/quicktime");
newEntry.setMediaSource(ms);
String uploadUrl =
"http://uploads.gdata.youtube.com/feeds/api/users/default/uploads";
VideoEntry createdEntry = service.insert(new URL(uploadUrl), newEntry);
Подводя итог, я задаю следующие вопросы:
- Что я делаю не так в обоих подходах?
- Что касается моей простой цели - загрузить видео на YouTube и получить ссылку на YouTube после этого, какой метод вы порекомендуете? Даже если это ни один из вышеперечисленных.
Спасибо.
---- Обновление 04/10 ----
- Попытавшись использовать другой телефон, я обнаружил, что Youtube не отображается в качестве выбора для загрузки видео - это проблема моего телефона (вероятно, из-за ПЗУ).
Однако, даже если он работает с использованием намерений, это не тот путь, потому что я не могу вернуть URL, и это очень важно.
- После некоторых исследований кажется, что второй метод невозможен. API YouTube для Java не работает в Android.
При этом я ищу предложения о том, как загрузить видео на Youtube в Android.
Что я действительно хочу, так это выбрать видеофайл, загрузить его на Youtube и получить URL-адрес YouTube. Желательно без какого-либо вмешательства со стороны пользователя, который выбирает только файл, а затем загрузка и получение URL-адресов выполняется «в фоновом режиме».
Какие-либо предложения? Какой самый простой и быстрый способ добиться этого?
Спасибо.