国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

向Qt 移植Android(Java)應用

移動開發
作為開放手持設備聯盟和Google發起的項目,Android 已發展成針對移動電話的首個開放性免費平臺。Android平臺的重要性之一就是:手機廠商和無線運營商能為其產品和服務提供合適的Android版本。

本文講解的內容是向Qt 移植Android(Java)應用,隨著智能手機的廣泛應用,不少智能機友玩轉不了,當然這話和編程沒什么關系,但也表明了我們編程人員的水平。作為編程者,不外乎做些代碼的事情。如果你對本文感興趣的話,就來看看本文吧。

簡介

作為開放手持設備聯盟和Google發起的項目,Android 已發展成針對移動電話的***開放性免費平臺。該項目自2007年11月5日啟動,當時Google、英特爾、T-Mobile、Sprint、宏達國際、高通和摩托羅拉等決定要實現一個雄偉目標:提供各種服務,讓消費用戶享有極為優秀的用戶體驗。

Android平臺的重要性之一就是:手機廠商和無線運營商能為其產品和服務提供合適的Android版本。該特性將對成本降低及產品創新產生直接影響。于是, Android就被視為智能手機移動平臺中的嶄新而具潛力的選擇。

向Qt 移植Android(Java)應用 

向Qt 移植Android(Java)應用

另一方面, Qt已被視為***移動編程世界中功能強大的組件。Qt在桌面系統中的使用最為令人矚目,如KDE、Opera、Skype和VirtualBox,但是最近它被移植到了諾基亞移動平臺,如S60和maemo。自1991年由Trolltech發布,Qt以兩種不同的許可證(開源許可證和商業許可證)發行,這使Qt更適合非GPL的開源項目,同時也適合商業用戶。2008年6月諾基亞收購了Trolltech,目的是加速移動終端和桌面應用的跨平臺軟件戰略的實施。2008年9月29日,諾基亞將Trolltech改名為Qt。

本文提供的信息指引大家在開發中將Android應用移植到Qt for Symbian。

Android平臺概述

Android應用使用Java編程語言(Dalvik虛擬機)開發,而諸如觸摸屏和各種存儲功能等終端服務則可通過Google services API訪問。用C或其它任何語言所編寫的應用也有可能運行,不過需要先將這些應用編譯成本地代碼后才行,然而這種開發路徑并不獲Google的正式支持。

自2008年10月起Android已作為開源項目(使用Apache許可證)供大家使用。此后,手機生產商和無線運營商可以自由地向其產品中添加各種封閉性的和專屬性的擴展。

盡管Android是基于Linux內核,但按Google的說法,它卻不是一個Linux操作系統。此外,它沒有本地窗口系統,也不支持全套標準Linux庫,包括GNU C庫。這個特點就使現有Linux應用或庫的重用變得很困難。Android也不使用諸如J2SE和J2ME那樣的標準Java APIs。結果是:為這些平臺所編寫的應用與為Android平臺所編寫的應用不能兼容。Android僅重用Java語言語法,卻并不提供與J2SE或J2ME綁定的完整類庫和APIs。

下圖說明了目前的Android架構(來自Android開發者指南)。

向Qt 移植Android(Java)應用

系統通過一些系統驅動程序(如照相機,顯示屏,WiFi和鍵盤等)訪問移動電話的各項資源。之上的一層則由Andriod庫和運行系統(RunTime)組成。***一層Android提供了一套應用框架庫,使庫擴展和新應用創建均成為可能。

#p#

Android可以重用其它應用的其它一些組件。例如,你需要重用適合的滾動條組件,并使其也能用于其它系統,同時可以調用這樣的組件來為自己工作。為此Android系統被設計為:在需要用到系統的任何部分時,系統就會啟動一個應用進程,并針對那個部分的Java對象進行實例化。這樣Android并不提供如main函數這樣一個入口,而只提供了一些基本組件:activity(活動),services(服務),broadcast receives(廣播接收器)和content providers(內容提供器)。

Activities(活動)代表Android應用的屏幕。從某個活動中你可以顯示按鈕、標簽、菜單等。所有的活動都是android.app.Activity 類的子類。Services(服務)不可見,但卻在后臺運行。例如,一個服務能在用戶執行其它任務時播放音樂。每個服務都繼承自android.app.Service基類。Broadcast receives(廣播接收器)是一些組件,它們可以接收并響應不同的廣播告示,例如電量低這樣的消息。所有的接收器都繼承自android.content.BroadcastReceive基類。content provider(內容提供器)負責提供可供其它應用使用的應用數據。有了內容提供器,在不同應用之間共享數據就變為可能。所有的內容提供器都繼承自android.content.ContentProvider基類。

Android開發環境包括:Android SDK、Android源代碼,和有助于快速編制Android應用的一些可選的集成開發環境。Android軟件開發工具包(SDK)由一些庫和工具組成,包括一個能運行應用的模擬器。Android SDK可用于Windows、Mac OS X,和Linux。很多種集成開發環境都提供Android開發支持,如Eclipse(針對Andriod的Eclipse插件)。

Qt S60 概述

Qt應用是用C++加上編譯前能生成標準C++代碼的附加預處理器所實現的幾種非標準擴展所開發的。Qt也提供了與其它幾種編程語言的綁定,如Python、Ruby,和Perl。

Qt得到廣泛使用得益于其GUI widget,但它也提供了一整套的非GUI相關特性:SQL數據庫訪問、XML解析、線程管理、網絡支持及用于文件處理的一個統一跨平臺API。Qt已被成功地移植到了S60諾基亞平臺上。Qt for Symbian將"讓你能創建具創新性用戶體驗的優秀應用,同時又能快速進入市場"。比較Android,Qt不應該被視為移動電話平臺,而應該視為一個有趣而易用的編程框架,定會對移動編程事業做出可觀貢獻。

Qt現已被移植到了S60平臺,卻仍有一些APIs還沒有被實現,如訪問照相機和名片簿模塊。不過,通過對某些Symbian應用的回調還是可以訪問這些系統服務的。

向Qt 移植Android(Java)應用

為開發Qt Symbian應用,你需要安裝Qt S60 Nokia SDK,SDK由組成庫和開發工具(包括針對S60環境的模擬器)組成。此外,Carbide.C++ IDE(基于Eclipse框架)提供了完整的開發環境,對開發伙伴們提供了很大程度的幫助。你可以在諾基亞論壇維基百科中讀到有關Qt for Symbian的有趣文章(請參閱Qt for Symbian 分類)。

在Carbide 集成開發環境上構建Qt for Symbian應用是很簡單的,這些應用可以在S60模擬器甚至你的終端上(首先需要安裝Qt for Symbian庫)啟動。任何Qt應用的入口都是main方法(請記住:Android應用從某個Activity,即活動中啟動)。

范例

這是Android上的一個"Hello World ”簡單應用。

  1. package helloandroid;   
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. import android.widget.TextView;   
  5. public class HelloAndroid extends Activity {      
  6. @Override     
  7. public void onCreate(Bundle savedInstanceState) {         
  8. super.onCreate(savedInstanceState);         
  9. TextView tv = new TextView(this);         
  10. tv.setText("Hello World");         
  11. setContentView(tv);    
  12.  }  

如前文所述,任何Android應用的入口是一個Activity(活動,更精確的說法是android.app.Activity#onCreate(Bundle) 方法)。Android沒有標簽類,但卻有能用作標簽的文本視圖。然后,我們創建一個文本視圖,接著以剛剛創建的文本視圖設置Activity的內容。

現在,讓我們看一下如何創建一個相同的應用,不過是在Qt框架上。

#include <QApplication>#include <QLabel> int main(int argc, char *argv[]){  QApplication app(argc, argv);  QLabel label("Hello, world!");  label.show();  return app.exec();}
它只是打開一個應用并顯示標有"Hello World"字符串的一個標簽。你可以看到,主Qt類(QApplication)通過Main參數進行初始化。如前所述,Qt應用的入口是Qt主類中的main函數。然后,它創建一個簡單的標簽并顯示其內容。***,應用會從Qt應用的執行中返回代碼。另一個要點就是:這樣的代碼段也能在Maemo平臺上得到編譯并啟動(顯然,圖形效果不會相同,因為你使用了具有不同widgets的不同平臺)。

#p#

下例說明了如何在Android和Qt應用上分別插入一個菜單。

在Android上,菜單是以方法android.app.Activity#onCreateOptionsMenu(Menu)定義。而菜單項的回調則以方法android.app.Activity#onOptionsItemSelected(MenuItem)定義。

  1. package helloandroid;   
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. import android.widget.TextView;  
  5. import android.widget.Menu;  
  6. import android.widget.MenuItem;   
  7. public class HelloAndroid extends Activity {      
  8. private final int MENU_QUIT = 1;     
  9.  @Override     
  10. public void onCreate(Bundle savedInstanceState) {         
  11. super.onCreate(savedInstanceState);        
  12.  TextView tv = new TextView(this);        
  13.  tv.setText("Hello World");         
  14. setContentView(tv);    
  15.  }     
  16.  /*  
  17.  Creates the menu items   
  18. */     
  19. public boolean onCreateOptionsMenu(Menu menu) {        
  20.  menu.add(0, MENU_QUIT, 0, "Quit");         
  21. return true;    
  22.  }      
  23. /*   
  24. Handles item selections  
  25.  */     
  26. public boolean onOptionsItemSelected(MenuItem item) {      
  27. switch (item.getItemId()) {      
  28. case MENU_QUIT:          
  29. quit();          
  30. return true;     
  31.  }      
  32. return false;     
  33. }   

在Qt for Symbian上則會簡單一些。你只需定義一個QtAction,然后將其插入到應用的菜單欄中。***,以connect方法(用于定義Qt中的任意回調)來定義回調。

  1. #include <QApplication> 
  2. #include <QAction> int main(int argc, char *argv[]){    
  3. QApplication app(argc, argv);    
  4. QAction exitAction = new QAction(tr("&Exit"),this);   // Add action direct to menubar  menuBar()->addAction(exitAction);    
  5. connect(exitAction, SIGNAL(triggered()),this, SLOT(close()));  

 API 映射

文件輸入/輸出

對文件或其它設備的讀寫。.

Android類(出自package java.io):File, FileReader, FileWriter, BufferedReader, BufferedWriter

Qt類:QIODevice, QFile, QTemporaryFile, QBuffer, QProcess, QTcpSocket, QUdpSocket, QDataStream, QTextStream

網絡功能

Socket通信。

Android類(出自package java.net):Socket, InetSocketAddress, ServerSocket

o Qt類:QTcpSocket, QUdpSocket

HTTP/FTP 通信。

Android類(出自package java.net):HttpURLConnection, URL

Qt類:QNetworkAccessManager, QUrl, QUrlInfo

Android類(出自package org.apache.http.*):HttpClient, HttpGet, HttpPost, HttpResponse

Qt類:QHttpHeader, QHttpRequestHeader, QHttpResponseHeader

Qt 類:QFtp(Android中無對應類)

媒體

對文件或其它設備的讀寫。

Android類(出自package ndroid.media):MediaPlayer, MediaRecorder

o Qt類:AudioOutput, MediaController, MediaNode, MediaObject, MediaSource,ObjectDescription, Path, VideoPlayer

Android與Qt for Symbian的對比

Android被設計成移動電話平臺。因此,它能訪問各種系統資源,如觸摸屏、照相機,及通話功能等。另一方面,Qt是一個跨平臺應用和用戶界面框架,最初針對桌面環境而設計。而且,Qt還未提供能訪問移動電話資源的機制。下表說明了Android和Qt for Symbian之間的一些重要差異。

Android提供了對PIM(名片夾,日歷)的訪問,而Qt for Symbian尚未提供;

Android提供了對電話通話功能的訪問,而Qt for Symbian尚未提供;

Android提供了對信息收發功能的訪問,而Qt for Symbian尚未提供;

Android提供了對照相機的訪問,而Qt for Symbian尚未提供。

不過已有Qt for Symbian移動擴展補充提供了相關的支持。

在Android中,你可以從一個XML說明文件中加載應用的用戶界面(如果你使用Glade構建自己的應用用戶界面,Maemo也支持該特性)。然而Qt for S60并不支持這種特性;
 
Android基于Java,而Qt for Symbian基于C++;

Qt是跨平臺的。也就是說,應用有機會既在Qt for Symbian上執行也能在Qt for Maemo上執行,甚至能在windows桌面系統上執行。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-13 11:24:55

QT MPlayer 移植

2011-06-16 08:46:17

Qt Symbian 手機

2011-06-13 11:07:22

QT 移植

2011-06-25 15:05:48

達內培訓移動開發

2010-01-28 13:50:03

Android移植

2010-07-23 16:08:38

OPhone平臺

2011-06-13 15:57:26

linux QT QTOPIA

2015-05-05 10:16:17

AndroidWindows

2011-06-29 10:46:01

Qt Eembedded Linux

2011-07-04 10:56:10

Qt 移植 編譯

2018-11-08 09:38:17

微軟 Windows Linux

2011-07-02 13:42:24

Qt 移植

2019-10-08 09:55:43

微軟瀏覽器Windows

2011-06-30 15:51:39

2011-07-04 15:13:31

QT MPlayer 移植

2011-06-24 13:08:34

Qt Qt 4.5.3 移植

2011-06-30 16:08:05

Qt 字庫 QPF

2016-02-26 10:01:12

微軟安卓移植

2010-07-30 14:08:51

.NET for An

2012-05-18 20:30:19

微軟 Android ap
點贊
收藏

51CTO技術棧公眾號

欧美日韩精品高清| 国产精品精品国产| 国产精品日韩欧美一区二区| 涩爱av在线播放一区二区| 澳门成人av| 亚洲美女视频在线观看| 国产成人高清激情视频在线观看| 国产v片免费观看| 欧美aaaaa性bbbbb小妇| 欧美三级小说| 欧美日韩国产色| 日韩片电影在线免费观看| 波多野结衣乳巨码无在线观看| 欧美国产三区| 天天色图综合网| 精品香蕉一区二区三区| 精品成人国产| 亚洲国产精品传媒在线观看| 51久久精品夜色国产麻豆| 凹凸日日摸日日碰夜夜爽1| 国产精品久久麻豆| 狠狠色狠狠色综合日日91app| 日韩免费精品| 夜夜爽夜夜爽精品视频| 蜜桃免费一区二区三区| av中文字幕在线观看第一页| 高清不卡一区二区在线| 日本国产高清不卡| 97在线资源| 超碰成人久久| 欧美日韩另类国产亚洲欧美一级| 国产人妻777人伦精品hd| 欧美性生活一级片| 欧美日韩精品专区| 欧美日韩中文国产一区发布| 国产中文欧美日韩在线| 欧美日韩免费视频| 97超超碰碰| 欧美天天在线| 日本道精品一区二区三区| 性欧美大战久久久久久久免费观看| 理论片播放午夜国外| 欧美wwwww| 在线播放亚洲激情| 欧美在线激情网| 五月综合激情在线| 中文在线不卡| 97久久精品国产| 日本不卡网站| 欧美视频中文一区二区三区在线观看| 免费电影一区| 欧洲专线二区三区| 久久精品国产清自在天天线| 欧美老女人性开放| 成人一区视频| 午夜一区二区三区不卡视频| 欧美成人性生活| 亚洲黄色免费av| 高跟丝袜欧美一区| 日韩在线第三页| 毛片av中文字幕一区二区| 99国内精品久久久久久久软件| 精品三区视频| 欧美一级日韩不卡播放免费| 中文字幕国产在线| 国产精品久久久一区麻豆最新章节| 亚洲一卡二卡三卡四卡无卡网站在线看| 一本久久青青| 九九视频直播综合网| 黄色软件视频在线观看| 欧美美女直播网站| 国产三级在线免费| 欧美日韩亚洲91| 天堂在线免费av| 懂色av一区二区三区| www午夜视频| 国产精品视频免费| 九九九九免费视频| 国产午夜一区二区三区| 久草免费福利在线| 国产99精品国产| a级网站在线观看| 精品午夜久久福利影院| 91免费国产精品| 男人的天堂久久精品| 国产又黄又爽免费视频| 国产精品1区2区3区在线观看| 亚洲欧美日韩精品在线| 可以免费看不卡的av网站| 日韩久久在线| 国产福利一区二区三区在线视频| 日本a在线天堂| 91丨porny丨在线| 国产成人免费高清视频| 成人激情综合网站| 杨幂毛片午夜性生毛片| 中文字幕 久热精品 视频在线 | 免费久久精品视频| 中文字幕精品—区二区日日骚| 久久国产精品99国产| 亚洲精品不卡| 97成人超碰视| 热久久精品免费视频| 国产精品∨欧美精品v日韩精品| 亚洲成人a级片| 色偷偷av一区二区三区乱| 亚洲欧洲免费| 97人人做人人人难人人做| 91久久精品无嫩草影院| 亚洲成av人片在线| 在线观看午夜av| 亚洲精品wwwww| 国产精品一区二区精品视频观看 | 欧美激情第8页| 26uuu成人| 自拍偷拍欧美激情| av在线日韩国产精品| 亚洲国产美女久久久久| 韩国三级大全久久网站| 国产91精品一区二区绿帽| 国产一区二区成人久久免费影院| av磁力番号网| 99久久精品国产观看| 中文在线最新版天堂8| 亚洲女人被黑人巨大进入| 亚洲欧洲色图| 亚洲在线观看一区| 久久久精品国产免大香伊| 日韩电影免费| 日韩欧美自拍偷拍| 色综合久久中文| 成人网在线免费看| aaa亚洲精品一二三区| 欧美日韩在线精品一区二区三区激情综| 欧美r级电影在线观看| 欧美男生操女生| 在线免费黄色| 欧美壮男野外gaytube| 日本vs亚洲vs韩国一区三区二区| 国产二区视频在线| 3d动漫精品啪啪一区二区竹菊| 好看的中文字幕在线播放| 国产精品美女在线观看| 99在线视频精品| 欧洲黄色一区| 国产精品夜间视频香蕉| 日韩综合一区二区| 女人和拘做爰正片视频| 日韩一级二级三级精品视频| 国产欧美亚洲精品a| 欧美视频免费看欧美视频| 一区二区三区在线视频观看58| 成人在线视频播放| 欧美精品国产精品久久久| 国产精品欧美一区喷水| 日韩五码电影| 亚洲图片欧洲图片日韩av| 欧美日本高清视频在线观看| 最新亚洲精品| 亚洲精品久久区二区三区蜜桃臀 | 日韩电影免费| 2019中文字幕在线观看| 成人av午夜电影| free性欧美hd另类精品| 999在线免费观看视频| 亚洲永久免费av| 精品少妇av| 成年人黄视频网站| 久久6免费高清热精品| 亚洲在线网站| 国产午夜精品久久久久免费视| 成人免费91在线看| 欧美性三三影院| 一本一本久久a久久综合精品| 日本一二区视频| 国产精品网站大全| 亚洲成av人片在线观看| 久久精品不卡| 国产午夜精品一区理论片| 国产一区二区精品在线| 欧美系列亚洲系列| 日韩一级网站| 一本久久知道综合久久| 久久综合入口| 欧美在线免费观看视频| 日韩欧美午夜| 午夜国产视频| 成人激情电影一区二区| 欧美日韩中文在线观看| 亚洲欧洲日本mm| 国产综合色区在线观看| 免费av观看网址| 91在线视频官网| 高清一区二区| 性一爱一乱一交一视频| 春色成人在线视频| 色哟哟一区二区在线观看| 国产视频一区在线观看一区免费| 另类图片综合电影| 一级黄色特级片|