用c++寫安卓手機(jī)軟件的方法:

創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),網(wǎng)站設(shè)計,綿陽服務(wù)器托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出創(chuàng)新互聯(lián)公司。
安裝ndk,使用純c++開發(fā)安卓程序,下邊是詳細(xì)的步驟與說明:
1、編寫入口函數(shù)
android_main為入口函數(shù),和C++中的main函數(shù)是一樣的。這里創(chuàng)建CELLAndroidApp的對象,直接調(diào)用main函數(shù)。
void?android_main(struct?android_app*?state)
{
CELLAndroidApp????app(state);
app.main(0,0);
}
2.繪制類的實現(xiàn)說明
protected:
EGLConfig????????_config;
EGLSurface???????_surface;
EGLContext???????_context;
EGLDisplay???????_display;
android_app*?????_app;
int??????????????_width;
int??????????????_height;
部分參數(shù)說明:
_surface:用于繪制圖形,相當(dāng)于windows繪圖中的位圖
_context:可以看做是opengl對象
_display:用于繪圖的設(shè)備上下文,類似于windows繪圖中的dc
3.構(gòu)造函數(shù)說明
CELLAndroidApp(android_app*?app):_app(app) ?????{ ?????????_surface????=????0; ?????????_context????=????0;? ?????????_display????=????0; ?????????_width????????=????64; ?????????_height????????=????48; ?????????app-userData????????=????this;?//用戶數(shù)據(jù) ?????????app-onAppCmd?????????=?????handle_cmd;?//窗口的創(chuàng)建銷毀等 ?????????app-onInputEvent?????=????handle_input;?//回調(diào)函數(shù) ?????}?
值得注意的是,這里的app中的userData,傳入用戶數(shù)據(jù),這里直接傳入this,onAppCmd傳入的handle_cmd回調(diào)函數(shù),onInputEvent傳入的事handle_input回調(diào)函數(shù)
4.類中函數(shù)main()說明
virtual????void?????main(int?argc,char**?argv)
{
int?ident;
int????events;
android_poll_source*?source;
while?(true)
{????????
while?((ident?=?ALooper_pollAll(0,?NULL,?events,?(void**)source))?=?0)?
{
if?(source?!=?NULL)
source-process(_app,?source);?//有觸摸事件,調(diào)用input函數(shù),相當(dāng)于dispatchmessage
if?(_app-destroyRequested?!=?0)
return;
}
render();
}
}
5.調(diào)用render()函數(shù),繪制圖形。
6.初始化設(shè)備函數(shù)initDevice()
virtual?void?????initDevice()
{
const?EGLint?attribs[]?=
{
EGL_SURFACE_TYPE,?EGL_WINDOW_BIT,
EGL_BLUE_SIZE,?8,?
EGL_GREEN_SIZE,?8,
EGL_RED_SIZE,?8,
EGL_NONE
};
EGLint?????format;
EGLint????numConfigs;
_display????=????eglGetDisplay(EGL_DEFAULT_DISPLAY);
eglInitialize(_display,?0,?0);
eglChooseConfig(_display,?attribs,?_config,?1,?numConfigs);?
eglGetConfigAttrib(_display,?_config,?EGL_NATIVE_VISUAL_ID,?format);
ANativeWindow_setBuffersGeometry(_app-window,?0,?0,?format);?
_surface????=?????eglCreateWindowSurface(_display,?_config,?_app-window,?NULL);
#if?0
EGLint?contextAtt[]?=?{?EGL_CONTEXT_CLIENT_VERSION,?2,?EGL_NONE,?EGL_NONE?};
_context?????=?????eglCreateContext(_display,?_config,?0,?contextAtt);
#else
_context?????=?????eglCreateContext(_display,?_config,?0,?0);?
#endif
if?(eglMakeCurrent(_display,?_surface,?_surface,?_context)?==?EGL_FALSE)
{
LOGW("Unable?to?eglMakeCurrent");?
return;
}
eglQuerySurface(_display,?_surface,?EGL_WIDTH,?_width);?
eglQuerySurface(_display,?_surface,?EGL_HEIGHT,?_height);
onCreate();
//?Initialize?GL?state.
glHint(GL_PERSPECTIVE_CORRECTION_HINT,?GL_FASTEST);?
glEnable(GL_CULL_FACE);
glShadeModel(GL_SMOOTH);
glDisable(GL_DEPTH_TEST);
glViewport(0,0,_width,_height);
glOrthof(0,_width,_height,0,-100,100);
7.繪制函數(shù)render()
virtual????void?????render()
{
if(_display?==?0)
{
return;
}
glClearColor(0,0,0,?1);?
glClear(GL_COLOR_BUFFER_BIT);
glEnableClientState(GL_VERTEX_ARRAY);?
if(g_arVertex.size()?=?2)
{
glColor4f(1,1,1,1);?
glVertexPointer(3,GL_FLOAT,0,g_arVertex[0]);?
glDrawArrays(GL_LINE_STRIP,0,g_arVertex.size());
}
eglSwapBuffers(_display,_surface);?//雙緩存的交換緩沖區(qū)
}
8.編譯程序,將程序?qū)氲侥M器中,最終運行的效果圖如下:
剛好最近我正在學(xué)習(xí)android可以幫到你。
1.JAVA開發(fā)是Android的應(yīng)用部分
2.C/C++語言開發(fā)是Android核心的部分
Android的C語言其實是指的Android底層的Linux內(nèi)核開發(fā),剛好你是學(xué)習(xí)Linux C語言的這樣就有用武之地。Android的底層是由Linux開發(fā)的,并建立在Linux之上的JAVA虛擬機(jī)來實現(xiàn)的。
所以要學(xué)習(xí)Android C語言的開發(fā),建議看看《Android系統(tǒng)原理及開發(fā)要點詳解》著本書講的內(nèi)容都是底層的內(nèi)容,一定要買。不過JAVA語言的部分也一定要看,因為C語言做的驅(qū)動最后還是需要被JAVA虛擬機(jī)調(diào)用。
另外要做AndroidC語言開發(fā)還需要注意一下幾點:
1.需要購買開發(fā)板來學(xué)習(xí),或者開源的手機(jī),這樣可以直觀的了解驅(qū)動的運作模式和有效調(diào)試
2.需要下載android源代碼,因為Android SDK開發(fā)是不會用到C語言的
3.android的NDK開發(fā)其實也是C/C++語言調(diào)用一些函數(shù)來實現(xiàn),建議也看
4.最后這個網(wǎng)址可以去看,多是講底層資料的:;page=end
建議:
1.JAVA還是要看的
2.建議往Android底層硬件開發(fā)走
方法/步驟 1 1)首先,下載android SDK.介紹一種非常簡單的方法,一并下載eclipse.在百度中輸入android SDK,進(jìn)入搜索界面。選中第一條。2)如果你已經(jīng)有eclipse,你可以直接在eclipse中進(jìn)行android SDK插件的安裝。方法就是點擊上面菜單里的help,選擇install new software進(jìn)行添加SDK。具體方法見經(jīng)驗如何在eclipse中添加android SDk。2 進(jìn)入下載界面后,選擇適合自己電腦的SDK進(jìn)行下載。這里下載的是android開發(fā)工具,非常的簡單實用,不需要我么重新下載eclipse,在這個下載包中會自帶一個eclipse FOR android的develop工具,我們直接在里面就可以進(jìn)行android的開發(fā)。3 下載完成后解壓,解壓后我們進(jìn)入文件名為eclipse的文件夾中。點擊eclipse應(yīng)用程序,運行。運行如圖,和我們常用的eclipse是不一樣的因為這個是android的開發(fā)工具,只適用于開發(fā)android。里面有好的插件已經(jīng)提供給我們,不需要再進(jìn)行安裝。4 進(jìn)入eclipse界面后,開始新建android項目。輸入新建項目名,如果沒有特殊要求,點擊next一直至最后完成。開始的配置只是一個大體的框架的構(gòu)建,這些我們可以以后進(jìn)行修改,最總要的還是代碼的編寫。5 所有配置都完成后就可以開始進(jìn)行android的開發(fā)了。進(jìn)行android開發(fā)的時候建議不要用拖拽控件的方式,建議直接編寫代碼。java環(huán)境變量配置 這里順便介紹一下java環(huán)境變量的配置。 1)首先打開環(huán)境變量的界面,添加一個JAVA_HOME的值。右擊計算機(jī)屬性,在左側(cè)有高級設(shè)置,進(jìn)入后就會看見環(huán)境變量選項了。 2)在系統(tǒng)變量中建立java_home,將你的java SDK所在的路徑放在里面。建立classpath。同樣在系統(tǒng)變量中新建一個classpath,在下面輸入.;即可,不用輸入其他的值。運行cmd,測試。按win+R打開命令面板,輸入cmd,進(jìn)入后輸入java -version然后回車,接著輸入javac,回車,看結(jié)果是否與下圖相同。這里需要注意的是java -version的java后面是有空格的。
新聞標(biāo)題:c開發(fā)android,c開發(fā)和java開發(fā)
文章源于:http://www.chinadenli.net/article8/dsgepip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、定制開發(fā)、App開發(fā)、虛擬主機(jī)、ChatGPT、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)