OPhone2.0 SDK
http://dl.ophonesdn.com/sdk/OPhone-SDK-2.0Beta.zip
安装OPhone SDK
最新版本的OPhone SDK以Android SDK Add-on的形式发布。下载安装的软件包中包括:模拟器运行需要的系统映像文件、模拟器使用的皮肤资源、OPhone API、帮助文档、示例代码、OPhone可视化开发工具(ODT)、Widget开发工具(WDT)等。这些资源可以在Android SDK的目录/add-ons/OPhone-SDK-2.0/中找到。
下面主要介绍了如何安装、配置OPhone SDK。如果你还没有下载最新版本的OPhone SDK,请通过下面的链接页面下载,同时链接页面还提供了关于安装、配置和使用方法的介绍。
OPhone SDK下载 对硬件/软件的要求
要使用OPhone SDK提供的工具来开发OPhone和Widget应用程序,你需要准备一台满足以下要求的计算机。
操作系统:
-
Windows XP 或者 Windows Vista Linux (最好是Linux Ubuntu 8.04或更新版本)
- Mac OS X 10.5.8 或更新版本
开发环境:
-
-
-
Eclipse JDT 插件(大部分的Eclipse IDE包已经包含JDT插件) EMF 2.5.0
- GEF 3.5.2
- WTP 3.1.2
JDK 5 or JDK 6
安装时包括对应版本的JRE,启动Eclipse请使用这里指定的Java版本。需要注意的是,如果开发机器上已经安装有JDK, 则需要检查其版本是否与上述条件相符合。可以在命令行下输入“java -version”或者“echo $JAVA_HOME”来检查默认JDK版本。Eclipse SDK 3.5.2(Galileo)
- 下载安装Android SDK。安装方法请依照Android SDK的安装。不同操作系统的安装包链接见下表:
平台 安装包 大小 MD5校验码 Windows android-sdk_r06-windows.zip 23293160 bytes 7c7fcec3c6b5c7c3df6ae654b27effb5 Mac OS X (intel) android-sdk_r06-mac_86.zip 19108077 bytes c92abf66a82c7a3f2b8493ebe025dd22 Linux (i386) android-sdk_r06-linux_86.tgz 16971139 bytes 848371e4bf068dbb582b709f4e56d903
-
把OPhone SDK里面提供的ODT、WDT作为Eclipse插件,安装配置到Eclipse集成开发环境。
-
ODT开发工具
OPhone Developing Tools,用于OPhone应用开发的Eclipse插件。安装前请确认Eclipse下已经卸载或者禁用其他ADT插件。 -
WDT开发工具
Widget Developing Tools,用于JIL Widget应用开发的Eclipse插件。
-
开发环境的搭建主要包括如下几步。安装Eclipse IDE
安装Android SDK
安装OPhone SDK,并作为Android SDK的一个组件。安装方法请依照添加OPhone SDK。
安装OPhone开发插件:ODT和WDTAndroid SDK的安装因为OPhone SDK以Android SDK Add-on的形式发布,因此安装OPhone SDK前必须首先安装Android SDK。
这里提供主要的安装步骤,详细的Android SDK的安装请参考Android SDK安装文档。
-
-
- export PATH=${PATH}:<your_sdk_dir>/tools
在Linux下,请编辑文件~/.bash_profile或~/.bashrc,在该文件的末尾添加如下内容: 在Windows下,鼠标右键点击我的电脑, 选择弹出菜单中的属性,在弹出窗口的高级卡片页下,点击按钮环境变量。在弹出的窗口中双击PATH,在变量值的输入窗口中添加内容;<your_sdk_dir>/tools。
- 在Mac OS X机器上,与Linux环境下配置相同,找到home目录下的.bash_profile文件,并添加配置。如果没有找到该文件,则可以自己创建一个。
-
-
与上述类似,添加一个环境变量。-
ANDROID_HOME="<your_sdk_dir>"
下载对应于您的开发所使用电脑版本的Android SDK。
解压对应的文件到工作目录下。这里需要指定一个合适的目录作为Android SDK的根目录,默认为android-sdk-<machine-platform>。
添加SDK的子目录<your_sdk_dir>/tools到系统的环境变量PATH中。
将tools目录加入PATH环境变量后,SDK提供的工具可以在文件系统的任何位置被调用运行,而不必每次指定SDK安装的完整路径名。
请注意,即便你将使用Eclipse作为开发环境,这里不需要安装“ADT”开发插件。因为在后续OPhone SDK安装中将会安装ODT作为替代。
添加必要的Android SDK组件
-
-
SDK Platform Android 2.1, API 7 - 包括Android 2.1的开发环境 Documentation for Android SDK, API xx - 对应版本平台的开发文档 Samples for SDK, API 7 - 对应版本平台的示例代码
- Android SDK Tools, revision xx - 包含Android SDK安装、应用开发调试工具等的工具包。Android SDK Tools可能不定期更新,这里可以检查、获取最新的开发工具包。
通过Android SDK and AVD Manager下载必要的Android SDK开发组件。在命令行下运行“android”启动组件包管理窗口。 - 点击“Install Selected”,开始安装选中的组件包。
选择“Available Packages”,点击打开含有“https://dl-ssl.google.com/android/repository/repository.xml”项,显示可供下载更新的软件包。
如果成功连网下载,将会显示可安装的各个组件,因为OPhone兼容性原因,请至少选中如下几项:
添加OPhone SDK
OPhone SDK以Add-ons的方式发布,因此必须将OPhone SDK安装在<your_sdk_dir>/add-ons目录下。方法是:
- 下载OPhone SDK 2.0安装包,并解压到<your_sdk_dir>/add-ons目录下。
创建AVD
为了能够在OPhone模拟器上运行你的应用程序,你需要首先创建一个模拟器下的虚拟设备(AVD)。所谓AVD就是模拟器运行时使用的一组配置, 用来描述模拟的OPhone平台。请任选以下一种方法来创建AVD。
-
-
打开命令行窗口(比如在Windows环境下运行“命令提示符”,或者Mac/Linux环境下运行“终端”。 运行命令android list target查询所有可使用的目标设备。
- 运行命令android list avd检查刚刚创建的AVD。
在返回结果中查看到设备OPhone的设备号,这里是“id: 2”。 使用OPhone target的设备ID,创建一个对应该设备的AVD。命令行如下:
android create avd -n OPhone -t 2- 在Android SDK and AVD Manager窗口中的“Virtual Devices”页,点击按钮“New...”,在弹出的窗口Create New AVD中输入Name:OPhone,Target:OPhone 2.0。确认创建后即完成。
- 通过Android SDK and AVD Manager窗口显示的AVD列表可以看到,名称为OPhone的AVD已经创建。
通过命令行方式创建AVD。 通过窗口操作,创建AVD。
- 运行命令android list avd检查刚刚创建的AVD。
运行OPhone模拟器
现在你可以从命令行启动运行OPhone模拟器了。
emulator -avd OPhone
你可以通过参数scale的设置来显示被缩放过的模拟器窗口,类似命令如下
emulator -avd OPhone -scale 0.6安装ODT和WDT安装好OPhone SDK后,作为这一系列步骤的最后一步,为Eclipse安装ODT、WDT两个插件。
-
安装ODT工具
- 安装WDT工具 (责任编辑:admin)
Intent的作用:使你的程序通过Intent调用相应的组件。
Intent(意图)的概念:表示我们要执行的某个操作。例如:查看某联系人的详细资料,发邮件给某人并传送一个文件,打电话给某人说某事。
Intent通过下面的属性来描述以上的某个意图:
1、Action(动作):用来表示意图的动作,如:查看,发邮件,打电话
2、category(类别):用来表示动作的类别。
3、data(数据):表示与动作要操作的数据。如:查看 联系人
4、type(数据类型):对data类型的描述。
5、extras(附件信息):附件信息。如:详细资料,一个文件,某事。
6、component(目标组件):目标组件。
android内置的Intent的各属性见google文档或http://book.51cto.com/art/200908/142683.htm
Intent的生成和各属性设置:见API
工作原理:你的程序向Android发送一个Inent请求,Android会根据Intent的内容在注册的IntentFilter中选择适当的组件来响应。比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION请求给Android,Android会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器Activity来浏览网页。
详细过程如下:
1、调用者生成Intent对象,并设置相关属性。生成的Intent分为以下两种:
显示Intent:对于明确指出了目标组件名称的Intent(调用setComponent或setClass来指定)。
隐式Intent:对于没有明确指出目标组件名称的Intent。于隐式Intent,由于没有明确的目标组件名称,所以必须包含足够的属性信息,他们是:Action,Data,Category。再由Android系统帮助应用程序寻找与Intent请求意图最匹配的组件。
2、向Android提交Intent请求:
根据要调用的组件不同,请求方式不同:startActivity(Intent),startServer(Intent),sendBroadcast(Intent)。
3、Android对Intnt进行解析,选择相应的组件进行相应。这里可以选择多个组件进行相应。
对于显示Intent,已经明确定义了目标组件的名称,直接调用目标组件响应即可。
对于隐形Intnt,具体的选择方法是:Android将Intent的属性和一个叫做IntentFilter的过滤器比较,IntentFilter中包含系统中所有可能的待选组件。如果IntentFilter中某一组件匹配隐式Intent请求的内容,那么Android就选择该组件作为该隐式Intent的目标组件。
4、注册目标组件,配置IntentFilter。
是目标组件在Android-Manifest.xml中声明自己所含组件的过滤器(即可以匹配哪些Intent请求)。一个没有声明Intent-Filter的组件只能响应指明自己名字的显式Intent请求,而无法响应隐式Intent请求。而一个声明了IntentFilter的组件既可以响应显式Intent请求,也可以响应隐式Intent请求。在通过和IntentFilter比较来解析隐式Intent请求时,Android将以下三个因素作为选择的参考标准。Action,Data,Category。而Extra和Flag在解析收到Intent时是并不起作用的。
应用程序的组件为了告诉Android自己能响应、处理哪些隐式Intent请求,可以声明一个甚至多个IntentFilter。每个IntentFilter描述该组件所能响应Intent请求的能力——组件希望接收什么类型的请求行为,什么类型的请求数据。比如之前请求网页浏览器这个例子中,网页浏览器程序的IntentFilter就应该声明它所希望接收的Intent Action是WEB_SEARCH_ACTION,以及与之相关的请求数据是网页地址URI格式。
如何为组件声明自己的IntentFilter? 常见的方法是在AndroidManifest.xml文件中用属性<Intent-Filter>描述组件的IntentFilter。
前面我们提到,隐式Intent和IntentFilter进行比较时的三要素是Intent的Action、Data以及Category。实际上,一个隐式Intent请求要能够传递给目标组件,必要通过这三个方面的检查。如果任何一方面不匹配,Android都不会将该隐式Intent传递给目标组件。接下来我们讲解这三方面检查的具体规则。
1.动作测试
<intent-filter>元素中可以包括子元素<action>,比如:
view plaincopy to clipboardprint? <intent-filter> <action android:name="com.example.project.SHOW_CURRENT" /> <action android:name="com.example.project.SHOW_RECENT" /> <action android:name="com.example.project.SHOW_PENDING" /> </intent-filter> <intent-filter> <action android:name="com.example.project.SHOW_CURRENT" /> <action android:name="com.example.project.SHOW_RECENT" /> <action android:name="com.example.project.SHOW_PENDING" /> </intent-filter>一条<intent-filter>元素至少应该包含一个<action>,否则任何Intent请求都不能和该<intent-filter>匹配。
如果Intent请求的Action和<intent-filter>中个某一条<action>匹配,那么该Intent就通
过了这条<intent-filter>的动作测试。
如果Intent请求或<intent-filter>中没有说明具体的Action类型,那么会出现下面两种情况。
(1) 如果<intent-filter>中没有包含任何Action类型,那么无论什么Intent请求都无法和这条<intent-filter>匹配。
(2) 反之,如果Intent请求中没有设定Action类型,那么只要<intent-filter>中包含有Action类型,这个Intent请求就将顺利地通过<intent-filter>的行为测试。
2.类别测试
<intent-filter>元素可以包含<category>子元素,比如:
view plaincopy to clipboardprint? <intent-filter . . . > <category android:name="android.Intent.Category.DEFAULT" /> <category android:name="android.Intent.Category.BROWSABLE" /> </intent-filter> <intent-filter . . . > <category android:name="android.Intent.Category.DEFAULT" /> <category android:name="android.Intent.Category.BROWSABLE" /> </intent-filter>只有当Intent请求中所有的Category与组件中某一个IntentFilter的<category>完全匹配时,才会让该Intent请求通过测试,IntentFilter中多余的<category>声明并不会导致匹配失败。一个没有指定任何类别测试的IntentFilter仅仅只会匹配没有设置类别的Intent请求。
3.数据测试
数据在<intent-filter>中的描述如下:
view plaincopy to clipboardprint? <intent-filter . . . > <data android:type="video/mpeg" android:scheme="http" . . . /> <data android:type="audio/mpeg" android:scheme="http" . . . /> </intent-filter> <intent-filter . . . > <data android:type="video/mpeg" android:scheme="http" . . . /> <data android:type="audio/mpeg" android:scheme="http" . . . /> </intent-filter>
<data>元素指定了希望接受的Intent请求的数据URI和数据类型,URI被分成三部分来进行匹配:scheme、authority和path。其中,用setData()设定的Intent请求的URI数据类型和scheme必须与IntentFilter中所指定的一致。若IntentFilter中还指定了authority或path,它们也需要相匹配才会通过测试。
显式Intent直接用组件的名称定义目标组件,这种方式很直接。显式Intent多用于在应用程序内部传递消息。比如在某应用程序内,一个Activity启动一个Service。隐式Intent恰恰相反,由于开发人员往往并不清楚别的应用程序的组件名称,它不会用组件名称定义需要激活的目标组件,它更广泛地用于在不同应用程序之间传递消息。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fenghome/archive/2010/07/31/5777855.aspx
真正精细的透视修正。这一行告诉OpenGL我们希望进行最好的透视修正。这会十分轻微的影响性能。但使得透视图看起来好一点。
这个函数中,我们对OpenGL进行所有的设置。我们设置清除屏幕所用的颜色,打开深度缓存,启用smooth shading(阴影平滑),等等。这个例程直到OpenGL窗口创建之后才会被调用。