人人范文网 范文大全

Android方案总结

发布时间:2020-03-03 12:40:25 来源:范文大全 收藏本文 下载本文 手机版

一、硬件描述

如上图,应用程序的开发过程中我们使用了飞思卡尔的i.MX51 EVK Hardware。 设备提供的支持如下:多标准音频回放;多标准视频回放;开放的系统支持;

二、软体结构

1、Android系统的初始化流程图如下所示:

BeginMkdir: /dev,/proc,/sys,/dev/pts,/dev/socketaction_for_each_trigger(\"early-init\", action_add_queue_tail);property_set(ro.XXX)open_devnull_stdio():fd is 0,1,2device_initaction_for_each_trigger(\"init\", action_add_queue_tail)log_init: /dev/__kmsg__property_initaction_for_each_trigger(\"early-boot\", action_add_queue_tail);parse_config_file(\"/init.rc\")Check have /dev/consoleaction_for_each_trigger(\"boot\", action_add_queue_tail);import_kernel_cmdline: /proc/cmdlineload_565rle_image(INIT_IMAGE_FILE)queue_all_property_triggers()get_hardware_name: /proc/cpuinfoIf load okrestart_procees()Yparse_config_file(/init.%s.rc)Show Image, and Print “A N D R O I D”to ttyEnd

可以具体描述如下: (1).初始化log系统。

(2).解析/init.rc和/init.%hardware%.rc文件。

(3).执行 early-init action in the two files parsed in step 2。

(4).设备初始化,例如:在 /dev 下面创建所有设备节点,下载 firmwares。

(5).初始化属性服务器,Actually the property system is working as a share memory.Logically it looks like a registry under Windows system。

(6).执行 init action in the two files parsed in step 2。

(7).开启 属性服务。

(8).执行 early-boot and boot actions in the two files parsed in step 2。

(9).执行 Execute property action in the two files parsed in step 2。

(10).进入一个无限循环 to wait for device/property set/child proce exit events。

2、方案基本框架,如下图所示:

Native codeDaivik runtimeAndroidNDKappsJNIAndroidSDKappsAndroid app frameworkStandard librariesLinux kernel+Android extension

(1) 图中Native Code包含一系列运行与Linux内核之上,由C/C++语言写成的库,这些库提供基本的系统级功能。其为应用层提供了本地开发的可扩展性,在此次开发过程中,Native Code主要为我们提供了音视频的编解码(即我们在此层开发了我们自己的音视频的编解码)。系统中主要使用的是G711音频编解码,实现语音的本地录音及播放;FFMPEG视频解码,进行图像视频的解码,实现视频的实时播放。

(2) Dalvik runtime的相关介绍。Android系统的应用开发语言是Java,而保障这一点的就是Android runtime。Java语言的运行需要有虚拟机的存在,而Android runtime 的核心就是一个称之为Dalvik的虚拟机。另外,Android runtime还包含了一个强大的Java核心类库。这个类库从功能上涵盖了传统Java核心类库的大多数功能。应用程序调用Android 函数库(即Android runtime中的Java核心类库)中的函数时,其实只是调用的一个函数名,具体实现在Native Code中的Library中。即是Library为上层的应用提供API供开发使用。 (3) 关于JNI。Java Native Interface(JNI)标准,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。我们开发的音视频本地编解码库,就是通过JNI来使用的。如下,

private static native void InitEnv(); private static native int drawFrame(Bitmap bitmap, byte[] inbuffer, int buf_len); 这是我们在程序中调用的本地函数,先要使用关键字native进行本地声明。 static { System.loadLibrary(\"decode\"); }

这是用来加载我们的c动态库的,上面的native声明中的方法就是在我们加载的库中具体实现的。

(4) Linux kernel 和Android extension部分。这一部分主要为我们提供了诸如硬件设备驱动(如display driver、camera driver等)、进程管理、内存管理、电源管理等底层功能。这一层的Linux并不是标准的GNU/Linux,而是根据我们的商业需求进行大量的定制。

Android总结

Android WebView总结

Android 个人总结

Android面试总结

Android 课程总结

Android学习总结

Android面试题总结

Android技术总结2

android PopupWindow学习总结

Android培训总结(定稿)

Android方案总结
《Android方案总结.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档