Интеграция стороннего Android JAR в мобильное приложение Titanium?

1

Я пишу приложение 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" из undefined (файл:///android_asset/Resources/app.js#162) где 162 - номер строки startActivity (намерение);

Я думаю, что это связано с тем, что источник не находится в пути к классам (я пытался использовать только его .jar, а также отдельные .java файлы) и/или не использовался в качестве модуля. Я использовал модуль ONE iOS, но понятия не имею, как написать свой собственный Android один, не говоря уже о переносе кого-то кода в модуль.

Любая помощь? Я уверен, что это то, с чем сражаются многие титановые пользователи.

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

Теги:
jar
mobile
android-intent
titanium

2 ответа

1
Лучший ответ

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

0
The reason is its not able to call the Activity method which is

сброс этой ошибки.

 Ti.Android.currentActivity.startActivity(intent)

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

  • 0
    Это начало, но теперь Titanium считает, что я не объявил об активности в моем tiapp.xml. Я почти уверен, что это потому, что файлы java не находятся в пути к классам при сборке APK. Как мне их добавить? Я не думаю, что мне нужен модуль для этого, но я не знаю, как еще я могу получить пакеты на пути.
  • 0
    В вашем Titanium SDK найдите этот $ version / android / modules, а внутри модулей добавьте jar и заново скомпилируйте приложение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню