2013-08-05 8 views
13

最近Qtを使用してAndroidアプリを作成しています。
しかし私は大きな質問をしています。私は、特殊な活動を呼び出すなど、ネイティブのアンドロイドAPISを使用/呼び出すことはできますか?[ネイティブ]:Android用QtでJava関数とサードパーティライブラリを使用する

Android SDKでは、私はjava内の連絡先を呼び出します。
Intent intent = new Intent(Intent.ACTION_PICK、ContactsContracts.Contacts.CONTENT_URI); startActivityForResult(インテント、PICK_CONTACT);

java android sdk API用のC++ラッパーライブラリがありますか?

また、(Javaで書かれた)特別なコンポーネントが必要な場合は、私のQtアンドロイドプログラムで使用できますか?
"pure qt"と "standard java"または "C++ android NDK"のページ/アクティビティが混在したプログラムを作成しますか?

(私はMOSYNCフレームワークの経験があり、いいですが、独自のライブラリに限定されているため、外部ライブラリやAndroid標準APIは使用できませんでした...)

ありがとうございます。

EDIT: JNI( http://qt-project.org/doc/qt-5/qtandroidextras-index.html)の改善によると、私は疑問を持っている: は、私は私のQTプロジェクトの「任意の」アンドロイドのJavaサードパーティのライブラリを使用することができますか?私はJava SDKプロジェクトでこれらのライブラリを使用していますか?

+2

QTはアンドロイドNDKを使用していますが、ラッパー機能は必要ですか? –

+1

はいセバスチャン、NDKはありますが、これはQTにもandroid sdk/ndkを使用するラッパーがあることを意味するものではありません。 – paykoob

+0

アンドロイド関連の機能のための特別なラッパーはないと思います。これは、依然としてNDKコールで実装する必要があります。 QTは、UIや基本ioの操作、オブジェクトの管理などのために機能する標準の「QT」機能を備えています。しかし、特別なアンドロイド機能にアクセスすることはまだ考えられません。 –

答えて

-1

Android NDKを使用してC/C++でプログラムすることができます。静的ライブラリにC++コードベースをラップして、Javaラッパー& JNIを通してロードする必要があります。

標準のNDKはRTTIをサポートしていないため、std :: stringなどの標準のC++の多くの機能も使用できません。これを解決するには、NDKを再コンパイルします。 Dmitry MoskalchukはこれをサポートするNDKの修正バージョンをhttp://www.crystax.net/android/ndk-r3.phpに提供しています。この変更されたバージョンは、ARMプロセッサ上で実行されるすべてのAndroid端末で動作します。

注:JNIコールは、パフォーマンスを大幅に低下させる可能性があります。 C/C++でプログラミングする方法を知っていれば、Javaはそれほど難しいことではありません。 Javaの利点は、NDKアプリケーションがコンパイルされたアーキテクチャに依存するAndroidを実行する任意のデバイス上でアプリケーションを実行できることです。

+2

NDKはRTTI、例外、STLをサポートしています。参照:http://developer.android.com/tools/sdk/ndk/index.html – Frohnzie

9

JNIを使​​用して、C++コードからJavaコードを呼び出す必要があります。私はこれのためのC + +ラッパーライブラリを知らない。 Java VMをJNI_OnLoadから取得する必要があります。また、Javaメソッドを呼び出すには、そのスレッドにVMを接続する必要があります.JNIEnvを使用すると、必要なクラスを見つけてメソッドを呼び出すことができますその上に。 This linkは細部に役立つはずです。

QTを使用してAndroidアプリケーションを開発する価値があるかどうかについては、クロスプラットフォームサポートが必要な場合やAndroid、Linux、Windowsなどに同じアプリケーションを展開したい場合は、Android私の経験では、Androidを直接使用する方が簡単で高速です。

3

"Qt for Android"をどのように進めているかわかりません。しかしこの時点では、この考えはKDEチーム(Kデスクトップ環境)によって正式にサポートされています。彼らはそれをKDE Necessitasプロジェクトと呼びます。そして、彼らは2012年10月にこのプロジェクトの最初のベータ版をリリースしました。

基本的にNecessitas SDKをインストールすると、おそらくこれらのものがインストールされます。

  1. Qt Creator - Android用にカスタマイズされたQt IDE。
  2. Android NDK - Qtコードから共有オブジェクトを構築する場合。
  3. Android SDK - Qtサポートでカスタマイズ。カスタマイズされたのQt Creatorの使い方

、あなたは

  1. は、AndroidのUIプロジェクトを作成することができます。
  2. 統合されたQtデザイナでUIをデザインします。
  3. Cコードをコンパイルして.soファイルを構築し、Javaコードでラップします。
  4. APKを作成して展開します。
  5. APKをデバッグします。

Android用Qtの主な懸念事項の1つはUIに関するものです。 UIは、KDE ​​4.xのネイティブなルックアンドフィールを持っています(これはデスクトップでも同じです)。 Android UIのテーマ(Holoなど)はまだ完全には利用できません。

このプロジェクトはまだベータ版なので、Androidのネイティブ機能のラッパークラス/機能が利用できるかどうかはわかりません。詳細については、公式文書を参照してください。

これが役に立ちます。

+0

ありがとう@gnuanu、実際に私は公式の言及を得るためにこの質問をする! – paykoob

関連する問題