使用Flash在电脑与Android间开发局域网P2P项目 |
本文标签:Android Adobe AIR 局域网P2P项目
要求你需要先安装下列产品: Flash Professional CS5
Flash Professional CS5上的AIR for Android开发插件
示例文件:
预备知识
使用FLASH PROFESSIONAL CS5开发运行于ANDROID平台的AIR2.5应用Android 2.2平台支持Adobe AIR运行时环境,版本为2.5,使用开发工具Flash Builder Burrito可以基于Flex SDK 4.5 (Hero)开发一个AIR2.5的应用,对于Flash Pro用户来说,使用装有AIR for Android插件的Flash Pro CS5同样可以方便快速地开发一个手机应用 。 如果你没有安装Flash Profession CS5,请到这里下载试用版,然后再到Adobe实验室下载AIR2.5开发插件(Beta 2),安装成功后打开Flash,在开始画面中新建一个AIR for Android文档 。这篇帖子用MAC 英文版的Flash Pro举例 。 图1. 在Flash Profession CS5中新建一个AIR for Android项目 由于安装了AIR2.5开发包,Flash Professional CS5便可以作为一个发布AIR2.5的工具,打开Publish Settings,看到Flash的发布环境是AIR Android,点击右面的设置按钮,可以进入AIR2.5的发布设置面板: 图2. AIR2.5的发布设置面板 General里是一些关于应用的基本信息,Android平台下的应用安装包是APK文件,在这个面板里可以直接给APK文件命名,并且定义应用程序名称 。需要注意的是在App ID这一项里可以定义应用程序ID,id值不能有下划线等特殊字符,否则编译的时候会报错 。 在Aspect ratio里可以设置应用在手机中的显示方式为横向(landscape)或者纵向(portrait) 。也可以指定是否全屏或者是否按设备的倾斜方向自动调整横纵显示(Auto orientation) 。 接下来是设置图像的渲染方式,这里有三个选项Auto,CPU和GPU,如果选择了GPU,会优先使用设备的显卡来渲染图像,不同的设备显卡有不同的限制,所以如果选择这一项需要在多个设备中测试以确保无误 。Android的GPU有如下几点限制:
如果使用GPU渲染,软键盘打开时输入框不会自动调整到可视范围内,所以需要将文本框位置固定在上半屏 。 如果一个显示对象不能被GPU渲染,比如加了滤镜的影片剪辑,它会完全不显示 。 图3. 在Deployment面板中设置部署和发布参数 Deployment是部署和发布的一些设置,如同发布一个桌面版的AIR应用程序一样,发布Android AIR也需要验证 。 Icons 是用来设置应用的显示图标(36×36, 48×48, 72×72),图片支持PNG文件 。 图4. 在Permissions中设置INTERNET权限 Permissions是设置应用的访问权限,因为本例需要开发一个P2P的网络应用,所以需要选择INTERNET这一项 。 接下来就是在移动设备上(本例为HTC Desire)的设置,打开设置->应用程序->开发,选择"USB调试",便可以使用USB将设备与电脑连接,并发布一个AIR2.5应用 。 使用FLASH P2P技术在局域网内搭建一个NETGROUP连接 Flash P2P (Pear to Pear)技术允许各个联网客户端使用Real-Time Media Flow Protocol (RTMFP)协议进行点对点通讯 。在广域网需要连接到支持RTMFP协议的服务器,在局域网则不需要服务器,可以使用组播地址(Multicast address)进行通讯 。P2P需要通过用户数据报协议(UDP)来传输数据,所以确保你的网关没有阻止UDP协议 。 这里介绍一个在局域网内建立P2P的例子,基本思路是建立一个NetConnection,然后搭建一个NetGroup,也就是通讯团队,最后与团队中其他邻居进行广播通讯 。 使用NetConnection建立连接,如果参数为"rtmfp:",则会建立一个局域网连接 。
使用NetGroup建立通讯团队,在GroupSpecifier里可以指定团队id,通过它可以建立PIN码来进行用户过滤 。按下面的代码可以建立一个NetGroup团队,如果要搭建局域网P2P,则必须使用组播地址(Multicast Address), 并且指定地址IP和端口,请查阅这里了解更多关于组播地址的信息 。
侦听NetStatusEvent事件来获取网络状态,NetStatusEvent侦听器是团队内通讯的窗口 。如果邻居连接到了NetGroup,便可以使用myNetGroup.post方法来广播消息对象,对方通过NetGroup.Posting.Notify来获取消息 。
需要注意的几点问题: 首次连接的时间根据网络状态的不同可能会很长,尤其是无线网络 。 图5. 运行效果 关于作者李鹏(James Li),2001年毕业于吉林大学商学院,同年接触Photoshop,Illustrator和Flash 。毕业后一直在从事Flash的设计与开发,在教育、IT、互联网广告等不同领域里做过4年的Flash设计师和5年的AIR程序开发,期间曾在2006与2008年两次去德国工作,对Flash前端交互设计有独到的见解和丰富的经验 。 |