`
javaeeha
  • 浏览: 22886 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

AIR Native Extension的使用(Android)一 : 打包ane

 
阅读更多

准备工作

开始之前确保以下软件都已经安装:

  • Flash Builder 4.6
  • Adobe AIR 3(Flahs builder中已经包含)
  • Adobe Flex 4.6 (Flahs builder中已经包含)
  • Java API for AS extensions(Flahs builder中已经包含 AIR 3 SDK,路径:${FB_HOME}\sdks\4.6.0\lib\android\lashRuntimeExtensions.jar)


1. 新建android项目,加入FlashRuntimeExtensions.jar

2.创建java类:


SIMCardInfo.java

package com.yj.flash.extension.android;


import android.content.Context;
import android.telephony.TelephonyManager;

/**
 * class name:SIMCardInfo<BR>
 * class description:读取Sim卡信息<BR>
 * PS: 必须在加入各种权限 <BR>
 * Date:2012-3-12<BR>
 * 
 * @version 1.00
 * @author CODYY)peijiangping
 */
public class SIMCardInfo {
	/**
	 * TelephonyManager提供设备上获取通讯服务信息的入口。 应用程序可以使用这个类方法确定的电信服务商和国家 以及某些类型的用户访问信息。
	 * 应用程序也可以注册一个监听器到电话收状态的变化。不需要直接实例化这个类
	 * 使用Context.getSystemService(Context.TELEPHONY_SERVICE)来获取这个类的实例。
	 */
	private TelephonyManager telephonyManager;
	/**
	 * 国际移动用户识别码
	 */
	private String IMSI;

	public SIMCardInfo(Context context) {
		telephonyManager = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
	}

	/**
	 * Role:获取当前设置的电话号码 <BR>
	 * Date:2012-3-12 <BR>
	 * 
	 * @author CODYY)peijiangping
	 */
	public String getNativePhoneNumber() {
		String NativePhoneNumber = null;
		NativePhoneNumber = telephonyManager.getLine1Number();
		return NativePhoneNumber;
	}

	/**
	 * Role:Telecom service providers获取手机服务商信息 <BR>
	 * 需要加入权限<uses-permission
	 * android:name="android.permission.READ_PHONE_STATE"/> <BR>
	 * Date:2012-3-12 <BR>
	 * 
	 * @author CODYY)peijiangping
	 */
	public String getProvidersName() {
		String ProvidersName = null;
		// 返回唯一的用户ID;就是这张卡的编号神马的
		IMSI = telephonyManager.getSubscriberId();
		// IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信。
		System.out.println(IMSI);
		if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
			ProvidersName = "中国移动";
		} else if (IMSI.startsWith("46001")) {
			ProvidersName = "中国联通";
		} else if (IMSI.startsWith("46003")) {
			ProvidersName = "中国电信";
		}
		return ProvidersName;
	}
}


AS3Function.java

package com.yj.flash.extension.android;

import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;

import android.content.Context;

/**
 * class name:AS3Function<BR>
 * class description:在这里的call方法里面写调用java和android接口的代码<BR>
 * PS: <BR>
 * Date:2012-3-15<BR>
 * 
 * @version 1.00
 * @author CODYY)peijiangping
 */
public class AS3Function implements FREFunction {

	@Override
	public FREObject call(FREContext pContext, FREObject[] pParams) {
		try {
			Context context = pContext.getActivity();// 用来取得AIR程序中的Context对象
			// Intent intent = new Intent(Intent.ACTION_VIEW);
			SIMCardInfo siminfo = new SIMCardInfo(context);
			// pParams为AIR传进来的参数组可以通过pParams[index].getXX()来获取;
			String ok = siminfo.getNativePhoneNumber()
					+ pParams[0].getAsString() + siminfo.getProvidersName();
			// String ok ="AAAAA"+pParams[0].getAsString();
			// activity.startActivity(intent);
			return FREObject.newObject(ok);// 返回一个Object对象给AIR
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

}


AS3Extension.java

package com.yj.flash.extension.android;

import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;

/**
 * class name:AS3Extension<BR>
 * class description:接口类和AIR程序对接<BR>
 * PS: <BR>
 * Date:2012-3-15<BR>
 * 
 * @version 1.00
 * @author CODYY)peijiangping
 */
public class AS3Extension implements FREExtension {

	@Override
	public FREContext createContext(String arg0) {
		return new AS3Context();
	}

	@Override
	public void dispose() {
	}

	@Override
	public void initialize() {

	}

}


AS3Context.java

package com.yj.flash.extension.android;

import java.util.HashMap;
import java.util.Map;

import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;

/**
 * class name:AS3Context<BR>
 * class description:<BR>
 * PS: <BR>
 * Date:2012-3-13<BR>
 * 
 * @version 1.00
 * @author CODYY)peijiangping
 */
public class AS3Context extends FREContext {

	@Override
	public void dispose() {
	}

	@Override
	public Map<String, FREFunction> getFunctions() {
		// 暴露air里能调用的函数名,getPhoneNum在AIR中可以使用,对应的类是AS3Function
		HashMap<String, FREFunction> hashmap = new HashMap<String, FREFunction>();
		hashmap.put("getPhoneNum", new AS3Function());
		return hashmap;
	}
}


3.export jar包

以上是java代码,以下Flash端代码:

4.创建flex库项目

创建flex库项目时选上包括air库

5.创建as类

IntentNativeUtil.as:

package com.yj.flash.extension.android
{
		import flash.events.EventDispatcher;
		import flash.events.StatusEvent;
		import flash.external.ExtensionContext;
		
		public class IntentNativeUtil extends EventDispatcher  
		{  
			private var context:ExtensionContext;  
			
			public static const HELLO_WORLD_FUNCTION:String = "getPhoneNum";//与java端中Map里的key一致
			public static const EXTENSION_ID:String = "com.yj.flash.extension.android";//与extension.xml中的id标签一致
			private var extContext:ExtensionContext;
			public function IntentNativeUtil()
			{
				extContext = ExtensionContext.createExtensionContext(EXTENSION_ID,"");
				//第二个为参数,会传入java代码中的FREExtension的createContext方法
			}
			public function getPhoneNum(name:String):String{
				if(extContext){
					return extContext.call(HELLO_WORLD_FUNCTION,name) as String;
				}
				return "failed";
			}
		}

}


6.打包ane

参考http://sswilliam.blog.163.com/blog/static/1896963832011910111931102/

需要注意的是打包命令应该是:


F:\ane>adt -package -storetype PKCS12 -keystore cert.p12 -storepass 123456 -targ
et ane com.yj.flash.extension.android.ane extension.xml -swc *.swc -platform And
roid-ARM -C Android-ARM .

命令最后加上 .

分享到:
评论

相关推荐

    Flex for Android第一个ANE(ActionScript Native Extensions)

    Flex for Android平台上的ActionScript Native Extensions(ANE)是一种强大的技术,允许开发者利用ActionScript与Android原生代码进行交互,从而扩展Adobe AIR应用的功能。在本文中,我们将深入探讨如何开发Flex for ...

    ANE-HelloWorld:Air Native Extension(iOS)示例

    Air Native Extensions(ANE),是Adobe Flash/Air平台提供的一种技术,它允许开发者将原生的iOS或Android代码集成到Flash应用中,从而扩展Flash的功能,实现更强大的性能和设备特性。在这个名为"ANE-HelloWorld"的...

    Android代码-安卓ane模板

    在Android开发中,ANE(Adobe Native Extension)是一种技术,它允许Adobe AIR应用程序利用原生的Android功能和API,从而扩展AIR应用的能力。本资源“Android代码-安卓ANE模板”是针对开发者提供的一个基础框架,...

    ane打包范例及注意事项

    ANE(Adobe Native Extension)是Adobe AIR开发中的一个重要概念,它允许开发者使用本地代码(如Java、C++或Swift)来扩展AIR应用的功能,提供更强大的性能和设备特性支持。本篇将围绕“ANE打包范例及注意事项”进行...

    Google-Maps-ANE:适用于 iOS 9.0+ 和 Android 19+ 的 Google Maps Adob​​e Air Native Extension

    谷歌地图-ANE 适用于 iOS 9.0+ 和 Android 19+ 的 Google Maps Adob​​e Air Native Extension。 还包括在 iOS 上使用 Apple 地图的选项。在这方面投入了大量时间、技巧和努力。 帮助支持项目先决条件你会需要: ...

    利用Adobe AIR本地扩展支持Android开发

    4. 在AIR应用中使用:在AIR应用中,使用ANE(Adobe Native Extension)框架加载并调用本地扩展提供的功能。 五、开发工具和资源 1. Adobe AIR SDK:包含了编译和打包AIR应用所需的工具。 2. Flex Builder或Flash ...

    ane制作打包例子

    ANE,全称Adobe Native Extension,是Adobe Flash Platform用于扩展Flash Player和Adobe AIR功能的一种机制。它允许开发者使用原生代码(如Java、Objective-C或C++)创建功能,然后在ActionScript项目中调用这些功能...

    ANE——Android本地编写

    ANE,全称Adobe Native Extension,是Adobe AIR(Adobe Integrated Runtime)的一个重要特性,允许开发者使用原生代码(如Java或Objective-C)来扩展Flash和Flex应用程序的功能。在Android平台上,ANE使得开发者能够...

    inmobi ANE

    ANE(Air Native Extension)则是Adobe AIR平台的一种扩展机制,允许AIR应用利用原生的移动设备功能,如访问硬件、系统服务或者特定API,而InMobi ANE就是让AIR应用能够无缝接入InMobi广告服务的桥梁。 **主要知识...

    ANE——Flash与Android的交互

    ANE,全称Adobe Native Extensions,是Adobe AIR(Adobe Integrated Runtime)的一个重要特性,它允许开发者扩展AIR应用程序的功能,使其能够利用设备的原生API,如访问硬件特性、系统服务等。在本主题中,我们将...

    admob ane android ios 稳定附例子详细教程

    AdMob ANE(Adobe Native Extension)是一种扩展,它允许Air开发者在他们的应用中无缝接入AdMob服务,以实现广告展示和盈利。 【描述】中的"adobe air 的admob 本机扩展包括 android & iphone ipad all in one 版...

    ANE-In-App-Purchase:适用于应用内购买的Air Native Extension(iOS和Android)

    应用程序内购买的Air Native Extension(iOS + Android) 这是适用于iOS和Android上的应用内购买。 它由开发,并在游戏。笔记iOS实施不包含设备上的收据验证。 Android实施使用 。安装ANE二进制文件(InAppPurchase....

    移动MM ane 附源码

    移动MM ANE(ActionScript Native Extension)是一种专为Android平台设计的扩展库,它允许Flash开发者在Android应用程序中实现特定的原生功能。这个“移动MM ane 附源码”资源提供了1.2.3版本的弱联网功能,特别适用...

    ANE-推送通知:用于推送通知的Air Native Extension(iOS和Android)

    用于推送通知的Air Native Extension(iOS + Android) 这是一个用于在iOS和Android上发送推送通知。 它由开发,并在游戏中使用。推送通知在iOS设备上,此ANE使用Apple 。 在Android设备上,它使用 。安装如果您的...

    Android代码-魅族安卓平台ANE

    在Android应用开发中,ANE(Air Native Extension)是一种强大的工具,它允许Adobe Air开发者利用原生的Java或C++代码来扩展AIR应用的功能,使得开发者能够访问设备的硬件特性或者系统级功能,如蓝牙、GPS等。...

    ADO for AIR 的ANE工程源码

    标题 "ADO for AIR 的ANE工程源码" 指的是一个使用Adobe AIR(Adobe Integrated Runtime)技术,并结合ActiveX Data Objects (ADO) 来访问数据库的ActionScript Native Extension(ANE)项目源代码。ANE允许Flex应用...

    ANE-Background-Music:Air Native Extension(iOS和Android),用于管理背景音乐

    适用于iOS音频会话的Air Native Extension(iOS) 这是一个用于管理iOS和Android上的背景音乐。 它将禁用其他应用程序中的音乐,并为您的应用程序设置适当的音频会话。 它由开发,并在游戏中使用。 安装 ANE二进制...

    ANE调用原生对话框

    标题“ANE调用原生对话框”涉及到的技术是ActionScript Native Extension(ANE),这是一种在Adobe AIR应用程序中调用原生平台功能的方法。ANE允许开发者利用AIR编写的应用程序访问iOS、Android等移动平台的特性和...

    AIR android本地扩展

    ANE(Adobe Native Extensions)是Adobe AIR用于与本地平台交互的一种机制。它由以下几个主要部分构成: - **air声明部分**:这部分负责定义如何从AIR端调用本地方法。 - **android原生部分**:这部分涉及Java代码...

    ane打包规范及开发技巧

    ANE(Adobe Native Extensions)是Adobe AIR为扩展Flash和ActionScript的功能而引入的一种技术。它允许开发者使用本地代码(如Java、Objective-C或C++)创建功能丰富的桌面和移动应用程序。在"ANE打包规范及开发技巧...

Global site tag (gtag.js) - Google Analytics