在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Qt on Android:使用JNI與第三方j(luò)ar包

            Qt on Android:使用JNI與第三方j(luò)ar包

            作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

            很多朋友在論壇和QQ群里問(wèn)到這個(gè),今天有時(shí)間寫(xiě)了個(gè)簡(jiǎn)單的示例。

            本文引用地址:http://www.biyoush.com/article/201609/304657.htm

            功能很簡(jiǎn)單,允許你輸入一個(gè)web頁(yè)面地址,使用Java的下載類庫(kù)下載后用QTextEdit顯示出來(lái)。

            效果展示

            初始效果如圖1所示:

            /

            圖1 useJar示例初始效果

            圖2為點(diǎn)擊GET按鈕后下載到對(duì)應(yīng)頁(yè)面的效果:

            /

            圖2 下載頁(yè)面成功

            下載部分,為了顯示如何使用jar包,我用了asynchttpclient,參考我的博文:Android開(kāi)源框架AsyncHttpClient (android-async-http)使用。

            項(xiàng)目創(chuàng)建

            參考《Qt on Android:圖文詳解Hello World全過(guò)程》吧,沒(méi)什么特別可說(shuō)的。

            pro文件內(nèi)添加“QT += androidextras”。

            創(chuàng)建一個(gè)AndroidManifest,package命名為an.qt.useJar。

            版權(quán)所有:foruok。轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/foruok。

            添加Java源碼

            你可以任意的文本編輯器中編輯java源碼,然后通過(guò)Qt Creator項(xiàng)目視圖加到項(xiàng)目里,在其它文件那里鼠標(biāo)右鍵點(diǎn)擊,選擇添加現(xiàn)有文件即可。參考下面幾張圖吧。

            /

            圖3 添加Java源碼之右鍵菜單

            /

            圖4 添加Java源文件之選擇Java源文件

            /

            圖5 添加Java源文件OK

            修改AndroidManifest,把a(bǔ)ctivity標(biāo)簽的android:name屬性值修改為an.qt.useJar.ExtendsQtWithJava。這是必須的,因?yàn)槲覀兊腅xtendsQtWithJava.java實(shí)現(xiàn)的Activity就是這個(gè)名字。

            好了,Java代碼添加結(jié)束。

            添加第三方j(luò)ar包

            這個(gè)沒(méi)什么好說(shuō)的,放在android/libs目錄下即可。看圖:

            /

            圖6 放jar包

            只要放好位置,Qt Creator編譯項(xiàng)目時(shí)就會(huì)把這個(gè)jar包打包到APK里。

            Java源碼使用jar包

            這是java編程的內(nèi)容了,import包名,然后使用即可。

            源碼分析

            咱先看Java側(cè)的代碼吧。

            Java代碼

            ExtendsQtWithJava.java:

            81package an.qt.useJar;

            import java.lang.String;

            import android.content.Context;

            import android.content.Intent;

            import android.app.PendingIntent;

            import android.os.Handler;

            import android.os.Message;

            import android.util.Log;

            import android.net.ConnectivityManager;

            import android.net.NetworkInfo;

            import android.net.Uri;

            import android.location.Criteria;

            import android.provider.Settings;

            import android.os.Bundle;

            import android.os.Environment;

            import java.io.File;

            import com.loopj.android.http.AsyncHttpClient;

            import com.loopj.android.http.AsyncHttpResponseHandler;

            public class ExtendsQtWithJava extends org.qtproject.qt5.android.bindings.QtActivity

            {

            private static ExtendsQtWithJava m_instance;

            private final static String TAG = extendsQt;

            private static String m_pageUri = null;

            private static Handler m_handler = new Handler() {

            @Override

            public void handleMessage(Message msg) {

            switch (msg.what) {

            case 1:

            if(m_pageUri == null){

            m_pageUri = (String)msg.obj;

            m_instance.downloadText(m_pageUri);

            }else{

            m_instance.notifyQt(0, (String)msg.obj, Downloader is Busy now!);

            }

            break;

            };

            }

            };

            public ExtendsQtWithJava(){

            m_instance = this;

            }

            public static int networkState(){

            ConnectivityManager conMan = (ConnectivityManager) m_instance.getSystemService(Context.CONNECTIVITY_SERVICE);

            return conMan.getActiveNetworkInfo() == null ? 0 : 1;

            }

            public static AsyncHttpClient m_httpc = new AsyncHttpClient();

            public static ExtendsQtNative m_nativeNotify = null;

            public void downloadText(String uri){

            Log.d(TAG, start downloadText);

            m_httpc.get(uri, null, new AsyncHttpResponseHandler(){

            @Override

            public void onSuccess(String data){

            notifyQt(1, m_pageUri, data);

            m_pageUri = null;

            }

            @Override

            public void onFailure(Throwable e, String data){

            notifyQt(-1, m_pageUri, data);

            m_pageUri = null;

            }

            });

            }

            public static void downloadWebPage(String uri){

            Log.d(TAG, downloadWebPage);

            m_handler.sendMessage(m_handler.obtainMessage(1, uri));

            }

            private void notifyQt(int result, String uri, String data){


            上一頁(yè) 1 2 3 下一頁(yè)

            關(guān)鍵詞:

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉