android native activityWord格式.docx

上传人:b****6 文档编号:21454067 上传时间:2023-01-30 格式:DOCX 页数:19 大小:27.47KB
下载 相关 举报
android native activityWord格式.docx_第1页
第1页 / 共19页
android native activityWord格式.docx_第2页
第2页 / 共19页
android native activityWord格式.docx_第3页
第3页 / 共19页
android native activityWord格式.docx_第4页
第4页 / 共19页
android native activityWord格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

android native activityWord格式.docx

《android native activityWord格式.docx》由会员分享,可在线阅读,更多相关《android native activityWord格式.docx(19页珍藏版)》请在冰豆网上搜索。

android native activityWord格式.docx

android="

package="

com.example.native_activity"

android:

versionCode="

1"

versionName="

--ThisistheplatformAPIwhereNativeActivitywasintroduced.-->

--本地活动将引入的平台API-->

uses-sdkandroid:

minSdkVersion="

8"

/>

--This.apkhasnoJavacodeitself,sosethasCodetofalse.-->

--该.apk没有Java代码,所以设置hasCode属性值为假-->

applicationandroid:

label="

@string/app_name"

hasCode="

false"

--Ouractivityisthebuilt-inNativeActivityframeworkclass.

ThiswilltakecareofintegratingwithourNDKcode.-->

--我们的活动是内置本地活动框架类。

这将处理使我们的NDK代码成为一体。

-->

activityandroid:

name="

android.app.NativeActivity"

configChanges="

orientation|keyboardHidden"

--TellNativeActivitythenameofor.so-->

--告知本地活动共享库的名字-->

meta-dataandroid:

android.app.lib_name"

value="

native-activity"

intent-filter>

actionandroid:

android.intent.action.MAIN"

categoryandroid:

android.intent.category.LAUNCHER"

/intent-filter>

/activity>

/application>

/manifest>

--END_INCLUDE(manifest)-->

三、native-activity/res/values/strings.xml文件内容:

encoding="

resources>

stringname="

app_name"

NativeActivity<

/string>

/resources>

四、native-activity/jni/Application.mk文件内容:

#使用android-ndk-r5b/platforms/android-9/arch-arm/usr目录下的头文件与库文件

APP_PLATFORM:

=android-9

五、native-activity/jni/Android.mk文件内容:

#Copyright(C)2010TheAndroidOpenSourceProject

#版权所有(C)2010Android开源工程

#LicensedundertheApacheLicense,Version2.0(the"

License"

);

#根据2.0版本Apache许可证授权

#youmaynotusethisfileexceptincompliancewiththeLicense.

#根据本许可证,你可以不使用此文件。

#YoumayobtainacopyoftheLicenseat

#你可以获得许可证的副本在

#http:

//www.apache.org/licenses/LICENSE-2.0

#Unlessrequiredbyapplicablelaworagreedtoinwriting,software

#distributedundertheLicenseisdistributedonan"

ASIS"

BASIS,

#WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.

#除非因适用法律需要或书面同意,

#根据许可证分发的软件是基于"

按原样"

原则提供,无任何明示的或暗示的保证或条件。

#SeetheLicenseforthespecificlanguagegoverningpermissionsand

#limitationsundertheLicense.

#详见根据许可证许可下,特定语言的管辖权限和限制。

#用于返回当前目录的路径

LOCAL_PATH:

=$(callmy-dir)

#CLEAR_VARS变量是由生成系统已提供的,

#并且指出一个特殊的GNUMakefile文件将为你清除除了LOCAL_PATH以外的许多的LOCAL_XXX变量,

#(例如:

LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES,等等...)

#这是必须的,因为全部的生成控制文件是在一个单独的GNUMake执行环境中被分析的,在那里所有的变量是全局的。

include$(CLEAR_VARS)

#LOCAL_MODULE变量必须是已定义的,用来标识你的Android.mk文件中描述的每个模块。

#模块名字必须是唯一,并且不能包含任何的空格。

#注意生成系统将自动添加适当的前缀和后缀到相应的产生文件。

#换句话说,一个共享库模块命名为native-activity将产生libnative-activity.so。

LOCAL_MODULE:

=native-activity

#LOCAL_SRC_FILES变量必须包含将生成且汇编成一个模块的C和/或C++源文件的列表。

#注意你将不列出头文件和包含文件在这里,因为生成系统将自动地为你估算依赖;

#列出的源文件将直接递给编译器。

LOCAL_SRC_FILES:

=main.c

#使用在生成你的模块时的额外的链接器标志列表。

#对于用-l前缀传递特定的系统库名是有用的。

#liblog.so提供Android记录日志API

#libandroid.so提供Android功能访问API

#libEGL.so提供EGLAPI

#libGLESv1_CM.so提供OpenGLESAPI

#注:

#OpenGLES(OpenGLforEmbeddedSystems,以下简称OpenGL)

#OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。

#该API由Khronos集团定义推广,

#Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。

#EGL是OpenGLES和底层本地平台视窗系统之间的接口,为OpenGLES提供平台独立性而设计。

#它被用于处理图形管理、表面/缓冲捆绑、渲染同步,

#以及支援使用其他KhronosAPI进行的高效、加速、混合模式2D和3D渲染。

LOCAL_LDLIBS:

=-llog-landroid-lEGL-lGLESv1_CM

#将链接到本模块的静态库模块列表(用BUILD_STATIC_LIBRARY生成的)。

#这仅在共享库模块中有意义。

LOCAL_STATIC_LIBRARIES:

=android_native_app_glue

#BUILD_SHARED_LIBRARY是一个已由生成系统提供的变量,

#表明一个GNUMakefile脚本是负责收集你定义的从最近的include$(CLEAR_VARS)

#到决定去生成之间的全部LOCAL_XXX变量的信息,然后正确地生成共享库。

#注意你必须在包含这个文件之前最近位置有LOCAL_MODULE或LOCAL_SRC_FILES变量的定义。

include$(BUILD_SHARED_LIBRARY)

#$(callmacro-name[,param1,...])

#call是一个内置于make的函数,

#call会扩展它的第一个参数并把其余参数依次替换到出现$1、$2、...的地方。

#call的第一个参数可以是任何宏或变量的名称。

#允许你通过名字查找且包含其它模块的Android.mk文件。

#这将在你的NDK_MODULE_PATH环境变量提到的目录列表中查找模块标记的名字,

#并自动地为你包含它的Android.mk文件。

#为了方便起见,$NDK/sources是被NDK生成系统附加到你的NDK_MODULE_PATH变量值定义中。

$(callimport-module,android/native_app_glue)

六、native-activity/jni/main.c文件内容:

/*

*Copyright(C)2010TheAndroidOpenSourceProject

*版权所有(C)2010Android开源工程

*

*LicensedundertheApacheLicense,Version2.0(the"

*根据2.0版本Apache许可证授权

*youmaynotusethisfileexceptincompliancewiththeLicense.

*根据本许可证,你可以不使用此文件。

*YoumayobtainacopyoftheLicenseat

*你可以获得许可证的副本在

*http:

*Unlessrequiredbyapplicablelaworagreedtoinwriting,software

*distributedundertheLicenseisdistributedonan"

*WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.

*除非因适用法律需要或书面同意,

*根据许可证分发的软件是基于"

*SeetheLicenseforthespecificlanguagegoverningpermissionsand

*limitationsundertheLicense.

*/

//BEGIN_INCLUDE(all)

/*JavaNativeInterface*/

#include<

jni.h>

/*错误报告机制*/

errno.h>

/*EGL*/

EGL/egl.h>

/*OpenGLES1.x*/

GLES/gl.h>

/*接收和处理传感器事件*/

android/sensor.h>

/*AndroidloggingAPI*/

android/log.h>

/*android-ndk-r5b/sources/android/native_app_glue静态库头文件*/

android_native_app_glue.h>

#defineLOGI(...)\

((void)__android_log_print(ANDROID_LOG_INFO,"

__VA_ARGS__))

#defineLOGW(...)\

((void)__android_log_print(ANDROID_LOG_WARN,"

/**

*Oursavedstatedata.

*我们已保存的状态数据。

structsaved_state

{

floatangle;

/*RGB中的绿色值*/

int32_tx;

/*X坐标*/

int32_ty;

/*Y坐标*/

};

*Sharedstateforourapp.

*为我们的应用程序共享状态。

structengine

/*android_native_app_glue.h中定义的本地应用程序粘合剂模块用数据结构*/

structandroid_app*app;

/*sensor.h中定义的传感器管理器*/

ASensorManager*sensorManager;

/*加速度传感器*/

constASensor*accelerometerSensor;

/*已与一个循环器关联起来的传感器事件队列*/

ASensorEventQueue*sensorEventQueue;

/*非零为可以绘制动画*/

intanimating;

/*显示器句柄*/

EGLDisplaydisplay;

/*系统窗口或framebuffer句柄*/

EGLSurfacesurface;

/*OpenGLES图形上下文*/

EGLContextcontext;

/*系统窗口的宽度(像素)*/

int32_twidth;

int32_theight;

/*我们已保存的状态数据*/

structsaved_statestate;

*InitializeanEGLcontextforthecurrentdisplay.

*为当前显示器初始化一个EGL上下文。

staticint

engine_init_display(structengine*engine)

/*initializeOpenGLESandEGL

*初始化OpenGLES和EGL

*Herespecifytheattributesofthedesiredconfiguration.

*在这里具体指定想要的配置的属性。

*Below,weselectanEGLConfigwithatleast8bitspercolor

*componentcompatiblewithon-screenwindows.

*在下面,我们选择一个至少8位色的EGLConfig与屏幕上的窗口一致。

*注:

通常以ID,Value依次存放,对于个别标识性的属性可以只有ID没有Value。

constEGLint

attribs[]={EGL_SURFACE_TYPE,EGL_WINDOW_BIT,/*系统窗口类型*/

EGL_BLUE_SIZE,8,/*蓝色位数*/

EGL_GREEN_SIZE,8,/*绿色位数*/

EGL_RED_SIZE,8,/*红色位数*/

EGL_NONE};

EGLintw;

/*系统窗口的高度(像素)*/

EGLinth;

/*未使用的变量*/

EGLintdummy;

/*像素格式ID-RGBA/RGBX/RGB565*/

EGLintformat;

/*系统中Surface的EGL配置的总个数*/

EGLintnumConfigs;

/*Surface的EGL配置*/

EGLConfigconfig;

/*系统窗口句柄*/

/*1.返回一个显示器连接-是一个关联系统物理屏幕的通用数据类型。

*/

EGLDisplaydisplay=eglGetDisplay(EGL_DEFAULT_DISPLAY);

/*得到系统默认的*/

/*原型:

EGLDisplayeglGetDisplay(NativeDisplayTypedisplay);

*   display参数是本地系统显示器类型,取值为本地显示器ID值。

*返回:

如果系统中没有一个可用的本地显示器ID值与display参数匹配,

*   函数将返回EGL_NO_DISPLAY,而没有任何Error状态被设置。

/*2.EGL在使用前需要初始化,因此每个显示器句柄(EGLDisplay)在使用前都需要初始化。

eglInitialize(display,/*有效的显示器句柄*/

0,/*返回主版本号-不关心可设为NULL值或零(0)*/

0);

/*返回次版本号-不关心可设为NULL值或零(0)*/

EGLBooleaneglInitialize(EGLDisplaydpy,

*EGLint*major,

*EGLint*minor);

*   EGLint为int数据类型。

EGLBOOlean取值:

EGL_TRUE=1,EGL_FALSE=0。

/*Here,theapplicationchoosestheconfigurationitdesires.

*在这里,应用程序决定它要求的配置。

*Inthissample,wehaveaverysimplifiedselectionprocess,

*wherewepickthefirstEGLConfigthatmatchesourcriteria.

*在这个示例中,我们有一个非常精简的选择处理,

*我们选择第一个EGLConfig适应我们的标准。

/*定义一个希望从系统获得的配置,它将返回一个最接近你的需求的配置*/

eglChooseConfig(display,/*有效的显示器句柄*/

attribs,/*以EGL_NONE结束的参数数组*/

&

config,/*Surface的EGL配置*/

1,/*Surface的EGL配置个数*/

numConfigs);

/*系统中Surface的EGL配置的总个数*/

EGLbooleaneglChooseConfig(EGLDisplaydpy,

*constEGLint*attr_list,

*EGLConfig*config,

*EGLintconfig_size,

*EGLint*num_config);

/*EGL_NATIVE_VISUAL_IDisanattributeoftheEGLConfig

*thatisguaranteedtobeacceptedbyANativeWindow_setBuffersGeometry().

*EGL_NATIVE_VISUAL_ID是一个EGLConfig的属性,

*保证被ANativeWindow_setBuffersGeometry函数认可。

*AssoonaswepickedaEGLConfig,

*wecansafelyreconfiguretheA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1