Fluid idea for Life

随笔,杂记

与StageWebView的页面进行交互

之前看文档,不记得哪些看到,ActionScript无法与StageWebView加载的网页进行交互,后来看到一篇Blog写关于invoke javascipt in StageWebView的技巧,原来是:

stageWebView.loadURL("javascript:jsFunc('From ActionScript')");

原文在这里

Tags: air

AIR Android开发(三) 使用apk-tool整合native程序时的注意事项

在很早之前,我曾经写过一篇博客,谈到了AIR与本地程序通信,也就是使用apk-tool整合air android的技巧,后来在国外的Blog上看到几篇关于实现的具体说明,有朋友也给我发过邮件询问详细做法,我都是直接将其他人的Blog文章发过去。

在产品开发中,我发现了整合native程序时的一个小问题,在其他Blog上都忽略了这个问题,那就是整合后的程序在Google电子市场上对设备没有正确过滤。正常情况下,使用AIR开发的Android程序,要求系统必须是2.2及以上版本,且CPU必须是ARM v7或更高版本,但是有些手机,比如HTC Legend,可以升级到2.2,但仍不能跑AIR程序,因为CPU版本低了。而使用Flash Builder或Flash CS5等发布的AIR程序是可以正确过滤的。

如果使用apk-tool反编译AIR的安装apk文件,或其他AIR程序的apk文件,或发现其中有了lib目录,下面有个库文件:lib/armeabi-v7a/libNativeABI.so,从文件名分析,这个库应该是用来判断CPU型号的库。只要将lib目录也一并打包到apk中,即可正确过滤所有设备。

PS,如果我们用apk-tool解包AIR的apk文件,还能看到很多有趣的东西,比如AIR中CameraUI,CameraRoll,StageWebView的代码。

Tags: air android, apk-tool

AIR Android开发(二) 关于程序的版本号

在发布程序时,需要设置版本号,需要注意这里有两个地方要设置,一个是version,一个是versionLabel,这两者有什么区别?

如果你的程序是上传到电子市场上,那就要格外注意了。第一个参数是系统用来识别程序版本之用,为整数,每次升级程序这个值必须比上一个版本大。另外,这个值采用的是 000.000.000的格式,1.0.0表示是1.000.000,而不是1。

在Google电子市场,上传程序文件时,系统会验证这个值,如果非法,比前一个版本的要小,都会提示错误。

第二个参数,是供显示之用,字符串格式,比如 v1.0,v0224等等,可以随便点。

在产品开发中,版本号的管理也是非常重要的。

AIR开发新浪微博Android客户端

新浪微博提供了AIR的SDK,这给Flash开发者提供了开发机会,目前AIR已经支持android平台,针对iOS和Blackberry的开发工具也在更新中,如果能使用新浪提供的SDK开发移动应用,还是很有吸引力的,毕竟微博现在已经成为了时下最热门的web站点。

不过如果直接使用新浪提供的SDK来开发Android程序,还需要做一番DIY。上次为了参加上海的Flash技术交流会,我准备了一个Demo,就是使用AIR为Android开发新浪微博客户端,花了点时间将新浪的SDK作了一番修改,解决了一些问题,这里分享下其中的过程,如果有朋友有兴趣做类似的事,可以省一番功夫。

新浪微博的SDK,提供了两种远程登录方式:

1. 通过常规的HTTP请求来验证,客户端将帐号和密码发送至服务器端进行验证,客户端接收返回结果。这种方式简单易用,但缺点也是很明显的,那就是不安全,首先客户端需要获取帐号和密码,然后再发送情况,所有的请求都是明文,而且如果有恶意程序,那账户的安全没法保障,因此,这种方式是不推荐的。

2. 通过oauth协议,这可以说是目前最流行的方式,Facebook、Twitter等都采用了这种方式。如果不了解oauth协议的详情可以google。使用oauth协议的一个好处是第三方程序不会接触账户信息,登录过程是在服务器的网页上完成的,整个过程安全、简单。通过验证和授权后,第三方程序才能访问服务器上的数据信息。

使用oauth协议,在验证账户时,需要打开服务器上的登录页面,用户输入账户密码登录成功后,再回到程序。

新浪的做法是,打开浏览器进入到登录页面,登录成功后,显示一个pin码,然后用户手工将pin码输入到客户端页面,再进行验证。然而,这一过程在手机上很难操作,基本上不具备可用行。

为了自动获取登录成功后的pin码,最好的方式是AIR程序中直接嵌入网页,并且能捕获到登录成功后的pin码信息。幸运的是,新浪的API提供了这种可能性。

在demos.zip中,有个QuickSharePhoto,是使用Flash Build Burrito开发的微博客户端程序,可以拍照,发送微博,其中包括了改动后的新浪AIR SDK。主要的修改在com.sina.microblog.MicroBlog这个类中,使用了AIR Android特有的StageWebView来实现嵌入浏览器页面这个功能。

http://www.fluidea.cn/20101128/demos.zip

 

Tags: air, android

昨天的技术交流会

 昨天去参加纬度网举办的技术交流会,活动组织的很不错,也有幸认识了一些久闻大名的同行,见到了在网上认识很久的Y.Boy,还有维度网的老大。

不过略有遗憾的是,演讲时感觉发挥的不够好,一些计划内的东西没讲出来。下午有段时间困得厉害,有时候直接忘词了,口误比较多。

附上ppt和demo程序:

ppt: http://www.fluidea.cn/20101128/ppt.zip

demo: http://www.fluidea.cn/20101128/demos.zip

ppt中可能有不准确或错误的地方,可以给我发邮件或加Gtalk:walktree#gmail.com

 

Tags: 纬度网

最近的新闻

每逢MAX大会,Adobe都会发布一些新鲜的吸引眼球的产品或准产品。两天前,新发布的东西可真不少,包括有:

  • Flash Builder burrito预览版
  • Flex SDK Hero测试版
  • Adobe Flash Catalyst Panini预览版

除了这3个重量级别的,还有两个也值得一看:

一个名为Molehill的3D API,这应该是官方推出的第一个3D库,从视频上看,效果很惊艳。特别的是,这个库还支持移动版。不管怎样,需要硬件支持。

Blackberry Tablet OS SDK 测试版发布,支持air。在北美市场,Blackberry目前仍然占据智能手机市场的头把交椅(也许不久会被IPhone超越),现正进入平板电脑市场。因此,Adobe和RIM的合作也很值得期待,这为开发者提供了更多的机会。

言归正传,还是说说Flash Builder Burrito这个版本,真的不错,集成了新的AIR SDK 2.5和Flex SDK Hero,可以直接创建mobileProject,同时,还集成了多款Device模拟界面,最让我满意的是,运行速度超高。

Flex SDK Hero,针对移动版本进行了全面的优化。我将例子程序mobiletrader编译后,放到nexus one上面跑了下,启动速度很快,内建了键盘支持,包括Back键和方向键,另外,自动使用屏幕旋转,这点也很贴心。稍有不足的是,apk文件体积有点大,800多kb,不过还在承受范围之内,这也是Flex SDK一直以来的现象。

Tags: burrito, air, mobile

谈AIR Android开发(一)

这段时间使用air开发android程序,有些经验收获。手机开发和桌面、web开发有很大的不同,我觉得有两点比较明显,这两点,在程序设计过程中,要时刻放在心上:

一、受限于有限的资源。狭窄的手机屏幕,即使像Iphone这样的手机,盯着屏幕的时间稍长,眼睛也会感到疲惫;cpu、内存、带宽等资源等和PC无法相比。这些都对程序提出更高要求,性能优化,会占到很大的比重。

二、相对复杂的运行环境。在设计程序时,系统来电、屏幕锁定、电池、网络状况、分辨率...,这些因素都必须考虑到。有时候,即使是一个很简单的应用,也可能会比较复杂。

转到正题上来,AIR开发Android手机程序时,程序一般要实现以下功能:

1、处理状态,程序时刻要保存当前的状态,因为程序随时可能被终止或者转入后台,也可能随时被激活。这个可以通过事件监听来做到:

NativeApplication.nativeApplication.addEventListener( Event.ACTIVATE, appStatusHandler );
NativeApplication.nativeApplication.addEventListener( Event.DEACTIVATE, appStatusHandler );

2、实现多屏操作,也就是Multi-Screen。

观察手机程序,会发现一个特点。从UI角度看,每个功能操作页面往往可以独立,这样方便加一些转场动画,程序看起来比较酷,另外,将程序拆分为多个Screen,且每个Screen保存自己的状态,对于处理全局状态,会比较容易,也算是很面向对象了。

3、处理系统事件,最常见的就是Back和Menu按钮事件。

使用Back按钮是程序中常用的操作方式,符合用户的使用习惯。如果要很好的处理Screen之间的切换,就需要在设计时就考虑清楚。

Menu,应该是Android特有的处理方式,使用AIR来表现Menu是没有问题的,关键是要根据不同的状态给出不同的Menu,这同样和Screen的设计息息相关。

NativeApplication.nativeApplication.addEventListener( KeyboardEvent.KEY_DOWN, onKeyUpHandler );

function onKeyUpHandler(e:KeyboardEvent):void
{           
    switch( e.keyCode )
    {
    case Keyboard.MENU:            
        //显示自制的menu
        break;
    case Keyboard.BACK:   
        e.preventDefault();  //什么时候阻止系统默认事件,什么时候不阻止? 是个问题
        break;
    case Keyboard.LEFT:
    case Keyboard.RIGHT:
    case Keyboard.UP:
    case Keyboard.DOWN:
        //响应方向键
        break;
    }
}

4、UI。目前来看,还没有成熟的UI框架可用,使用Flash CS组件或Flex组件并不是很好的选择,会碰到这样或那样的问题,因为这些组件都没有针对移动设备进行优化,举个简单的例子,List组件,在手机上,滚动条并没有多少价值,对触摸屏来说,最便捷的操作方式是拖拽,滚动条很小,手指都很难点上,没什么意义。


这里推荐:
仿Android皮肤组件,http://blog.kevinhoyt.org/?p=548
as3flobile components,http://custardbelly.com/blog/?p=173

在这个页面http://www.adobe.com/devnet/devices/fpmobile.html,Code samples下面的Control examples,是个很好的例子,千万不能错过。

目前Flex Hero已经放出了开发中的版本,还没有机会研究。不过看了文档,感觉设计思路和我的想法比较接近。

5、可能的话,还有处理自动缩放,包括屏幕旋转自适应,这一点其实和PC上基本相同。对于支持物理感应的设备,还可以加上更酷的功能。

--------------------------------------------------------------------------------------------------

本文系原创,转载请注明出处,谢谢。

Tags: air, android

AIR for Android发布了

 AIR Runtime for android已经发布到电子市场了,今天试着在线安装了一遍。发布的这个版本也就是9/30发布的版本,应该说,已经比较稳定了,程序的启动速度比较快,但比起Native程序,还是有差距。

八卦一下,这个版本和我有点关系,因为其中的一个bug是我提交上去的,Bug #2723863。

哪些机器可以跑AIR? 起码得支持Android 2.2,但支持2.2,并不一定可以跑AIR。看这里(需要登录才能看),按照官方开发人员的说法,需要是ARMv7-A以上处理器的才可以,比如:

HTC Desire
HTC EVO
HTC Incredible
HTC Nexus One
HTC Triumph / Desire / Bravo
HTC Vision Blaze / Desire Z
HTC Ace / myTouchHD / Desire HD
HTC (T-Mobile) G2
HTC Merge / Lexicon

要求还比较高,Adobe的东西总是让人觉得有点不舒服。

不管咋样,这东西出来了,好歹也是个进步。电子市场上已经有几个AIR程序出现了,还是有不少支持者!

 

Tags: android

Android上的实验:AIR与本地程序通信

事实上,标题有点不准确。

几天前,air2.5发布了新的版本,Adobe称性能有了很大提高。提高了多少? 哪里提高了? 这个需要去实验才知道。

三个月前,在prerelease的论坛上,有位仁兄做了个实现,https://prerelease.adobe.com/project/forum/thread.html?cap=E30C51D41E3B4960BC4F1EBD76BEE24D&forid={DE38C2EF-3575-45B9-9320-F3D03884447D}&topid={C7E7AC43-D63B-4A68-8112-FCEB5F51CA48},很有趣,创意非凡的Idea,连Adobe也没有想到。

昨天终于有时间试了一把,在最新的版本上,运行良好,效果非常好。将本地程序和AIR程序打包在一起,然后两者使用Socket通信,这样,很多AIR无法实现的功能都可以通过这种方式实现。

Tags: android, air

Android上的AIR开发笔记

android上使用air开发已经有一段时间了,感觉还不错,当然,遇到了一些不太友好的问题。目前AIR 2.5还在prerelease的阶段,目前大约2周时间就会发布一个新版本,更新速度很是比较快的,这也说明目前的版本还不是很稳定。

从7月5日发布的版本到现在,就我的发现来看,一些bug被fixed,比如使用了Spark组件的Flex4程序不会crash了,Flash CS5的对app-xml的支持更完善了。另一个目前混乱的问题,是关于硬件加速的问题,官方声称目前已经支持这个功能,可惜我到现在还没有找到详细的说明文档。再,有两个比较大的问题,目前还一直没有解决:

1.使用Flex框架的程序中,如果有文本编辑类组件比如TextInput,当组件失去焦点时,虚拟键盘不会自动消失。这应该和组件的内在机制有关系,很可能其中的某个鼠标事件在移动设备上没有得到支持,而导致无法正确处理焦点事件。

这个问题我想只有在下一代的Flex框架中才能得到完美解决。

2.在播放H.264格式的视频时,性能很差。在Know Issues中,关于视频的Bug一直存在。不过在Nexus One上,使用浏览器看视频,性能却比AIR程序表现更好点。

说到Nexus One,确实是款很不错的手机。IPone我只是看过两眼,没有机会仔细研究。拿到Nexus One已经有一段时间了,性能确实很强劲,Flash Player 10.1的表现值得期待。

 

Tags: air, android

Total: 14Page 1 of 212Next ›