通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(三)
来源:互联网 发布:华为交换机端口acl 编辑:程序博客网 时间:2024/06/11 03:52
http://www.cnblogs.com/bobolive/p/3203040.html
jar包完成后,剩下就是要构建ANE包来供实际程序调用。
首先要建两个Flex库项目, default那个是官方建议加上的,仅用于不在真实环境下编译调试的时候有个默认接口不至于调用不成功报错,项目结构如下:
首先介绍配置文件extension.xml, 这个是必须的,用于指定平台和接口会直接打到ANE包里。
<extension xmlns="http://ns.adobe.com/air/extension/3.1"> <id>nav.wenbo.service</id><versionNumber>0.0.1</versionNumber><platforms><platform name="Android-ARM"><applicationDeployment><nativeLibrary>libAndroidServiceLib.jar</nativeLibrary> <initializer>nav.wenbo.service.ServiceExtension</initializer></applicationDeployment></platform><platform name="default"><applicationDeployment/></platform> </platforms></extension>
这里我只配置了Andriod平台,配置的平台都必须在ANE包结构中有对应的目录,如需支持其它平台如iPhone,要加上如下配置
<platform name="iPhone-ARM"><applicationDeployment><nativeLibrary>XXXLib.a</nativeLibrary><initializer>XXXExtensionInitializer</initializer><finalizer>XXXExtensionFinalizer</finalizer></applicationDeployment></platform>
接下来,创建ServiceController, 首先是要获取到扩展的上下文.
private var extContext:ExtensionContext; public function ServiceController() { super(); extContext = ExtensionContext.createExtensionContext( "nav.wenbo.service", "" );//注意这个是要和extensiion里的id对应 if ( !extContext ) { throw new Error( "service native extension is not supported on this platform." ); } }
当然,大部分时候会需要本地扩展返回的消息,这里加个监听
extContext.addEventListener( StatusEvent.STATUS, onStatus );
那么,就可以通过这个上下文来调用jar包中的方法。
public function setNotification($msg:String="hei~ here is a test from wenbo!"):void { extContext.call( "send", $msg ); } private function init():void { extContext.call( "init" ); } public function startAndriodService():void { extContext.call( "service", true); } public function stopAndriodService():void { extContext.call( "service", false); }
完整代码:
package nav.wenbo.service{ import flash.events.EventDispatcher; import flash.events.StatusEvent; import flash.external.ExtensionContext; public class ServiceController extends EventDispatcher { private static var _instance:ServiceController; private var extContext:ExtensionContext; public function ServiceController() { super(); extContext = ExtensionContext.createExtensionContext( "nav.wenbo.service", "" );//注意这个是要和extensiion里的id对应 if ( !extContext ) { throw new Error( "service native extension is not supported on this platform." ); } extContext.addEventListener( StatusEvent.STATUS, onStatus ); init(); } protected function onStatus(event:StatusEvent):void { var lev:String = event.level; trace("status change"); } public static function get instance():ServiceController { if(null == _instance) _instance = new ServiceController; return _instance; } public function setNotification($msg:String="hei~ here is a test from wenbo!"):void { extContext.call( "send", $msg ); } private function init():void { extContext.call( "init" ); } public function startAndriodService():void { extContext.call( "service", true); } public function stopAndriodService():void { extContext.call( "service", false); } }}
在ServiceLibDefault,直接把ServiceController拷过去,把所有外部引用去掉就可以了。
package nav.wenbo.service{ import flash.events.EventDispatcher; public class ServiceController extends EventDispatcher { private static var _instance:ServiceController; public function ServiceController() { super(); } public static function get instance():ServiceController { if(null == _instance) _instance = new ServiceController; return _instance; } public function setNotification($msg:String="hei~ here is a test from wenbo!"):void { trace( "send", $msg ); } private function init():void { trace( "init" ); } public function startAndriodService():void { trace( "service", true); } public function stopAndriodService():void { trace( "service", false); } }}
下一节,我会介绍把前三节的工作打包成一个ANE包供项目调用。
p: 更多的技术交流 wenbocode@126.com
0 0
- 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(三)
- 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(二)
- 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(一)
- 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(一)
- 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(二)
- 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(四)
- 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(五)
- 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(二)
- Adobe Native Extension(ANE)-Actionscript通过语音来控制你的android应用-Air for android
- AIR Native Extension的使用(Android)一 : 打包ane
- air native extension java代码在ane文件解压后
- android通过服务实现消息推送
- android通过服务实现消息推送
- android通过服务实现消息推送
- 通过服务启动消息通知
- AIR中不使用ANE实现IOS消息推送
- IOS、Andriod、WP8 三大系统后台运行及消息推送机制
- IOS、Andriod、WP8 三大系统后台运行及消息推送机制
- 关于页面嵌入swf覆盖div层的问题
- 布线问题(nyoj 38) 最小生成树
- 提示磁盘被写保护怎么办?
- IOS 锁屏 状态下,看到歌手图片
- Ext4.2官方例子TabCloseMenu.js的BUG
- 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(三)
- matlab 程序分析
- 内存子系统1_分配接口
- JSP注释及三种scriptlet的用法
- Tomcat在处理GET和POST请求时产生的乱码问题
- UVa:10047 The Monocycle
- Android Broadcast 和 BroadcastReceiver的权限限制
- 年薪15万的80后小本科:6分钟让你少走6年职场弯路
- 引用(Reference)与指针(Pointer)