Интеграция стороннего Android JAR в мобильное приложение Titanium? - PullRequest
1 голос
/ 24 мая 2011

Я пишу приложение 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.Я работаю над этим и буду публиковать обновления / пробовать предложения

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Попробуйте использовать новый SDK. http://developer.appcelerator.com/doc/mobile/android/module_sdk

0 голосов
/ 24 мая 2011
The reason is its not able to call the Activity's method which is

выдает эту ошибку.

 Ti.Android.currentActivity.startActivity(intent)

Это должно работать.

...