Я пишу приложение Titanium, которое пытается воспроизвести видео на YouTube.Цель состоит в том, чтобы удержать пользователя внутри приложения, поэтому о вызове собственного приложения YouTube, которое я уже могу сделать, не может быть и речи. У меня есть код, который работает на iOS, но только потому, что встраивание вWebView поддерживает контент.К сожалению, это не относится к Android.
Кажется, что http://code.google.com/p/android-youtube-player/wiki/OpenYouTubePlayerActiviyInstructions решит мои проблемы, но я не уверен, как использовать его из Titanium.Док предлагает сделать это с Android:
Intent lVideoIntent = new Intent(null, Uri.parse("ytpl://"+YOUTUBE_PLAYLIST_ID), this, OpenYouTubeActivity.class);//public Intent (String action, Uri uri, Context packageContext, Class<?> cls) from Android doc
startActivity(lVideoIntent);
Итак, используя http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.Android.Intent-object.html и http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.Android.Activity-object.html в качестве направляющих, придумали:
var intent = Ti.Android.createIntent({
action: 'null',
data: 'ytv://'+vguid,
packageName: 'com.keyes.youtube',
className: 'com.keyes.youtube.OpenYouTubeActivity'
});
Ti.Android.Activity.startActivity(intent);
Вмой TiApp.XML, я добавил это:
<android xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<activity android:name="com.keyes.youtube.OpenYouTubePlayerActivity"></activity>
</android>
Когда я пытаюсь запустить код, я получаю эту ошибку: TypeError: Невозможно вызвать метод "startActivity" из неопределенного (file: ///android_asset/Resources/app.js#162) где 162 - номер строки startActivity (намерение);
Я думаю, что это как-то связано с тем, что источник не находится в пути к классам (я пытался использоватьтолько его .jar, а также отдельные файлы .java) и / или он не используется в качестве модуля.Я использовал ОДИН iOS-модуль, но не знаю, как написать свой собственный Android-модуль, не говоря уже о переносе чьего-либо кода в модуль.
Любая помощь?Я уверен, что это то, с чем сталкиваются многие пользователи Titanium.
edit 1
Я добился некоторого прогресса в этом, но до сих пор нет решения.Я прошел путь «модуля», потому что я не видел другого способа получить файлы jars / java, включенные в сборку проекта.Я собрал модуль как «ytModule» и включил его, добавив
<module version="0.1">com.keyes.ytModule</module>
в tiapp.xml.Затем я получаю
[DEBUG] Looking for Titanium Module id: com.keyes.ytModule, version: 0.1, platform: <any platform>
[DEBUG] module_id = com.keyes.ytModule
[DEBUG] appending module: com.keyes.ytModule.YtplayerModule
при сборке из TitaniumStudio.Я работаю над этим и буду публиковать обновления / пробовать предложения