Binyy Wuhan

i love Flex i come from Wuhan

导航

ANE【原创】FlexMobile Ios/Android 电子罗盘方位角 (二)

二. Android方位角

总体思路为: jar + swc + 相关文件 ---adt打包---> ane

 

 

1. Android库

 

创建Android项目(可以不要Activity)

导入FlashRuntimeExtensions.jar包,包所在地址如下图:

 

库项目目录如下图:

 

根据FlashRuntimeExtensions框架实现逻辑内容:

获取方位角核心逻辑类OrientationListener实现SensorEventListener:

View Code
package com.yyf.nativeExtension;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.util.Log;

public class OrientationListener implements SensorEventListener {

    private OrientationExtensionContext ctx;

    public OrientationListener(OrientationExtensionContext ctx) {
        this.ctx = ctx;
    }

    @Override
    public void onAccuracyChanged(Sensor arg0, int arg1) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onSensorChanged(SensorEvent evt) {

        if (ctx != null) {
            
            StringBuilder s = new StringBuilder(Float.toString(evt.values[0]));

            s.append("&").append(Float.toString(evt.values[1])).append("&").append(Float.toString(evt.values[2]));

            Log.i("OrientationListener", s.toString());

            ctx.dispatchStatusEventAsync("CHANGE", s.toString());

        }
    }

    public void dispose() {
        Log.i("OrientationListener", "dispose");
        this.ctx = null;
    }

}

(源代码文章最后提供下载)

 

 

2. ActionScript库

 

此swc库负责和Android代码交互并面向As开发提供接口

库项目目录如下图:

具体实现看源码

这里要提的是途中框出的文件extension.xml

View Code
<extension xmlns="http://ns.adobe.com/air/extension/3.1">
  <id>com.yyf.orientation</id>
  <versionNumber>1</versionNumber>
  <platforms>
     <platform name="Android-ARM">
          <applicationDeployment>
            <nativeLibrary>OrientationNative.jar</nativeLibrary>
            <initializer>com.yyf.nativeExtension.OrientationExtension</initializer>
            <finalizer>com.yyf.nativeExtension.OrientationExtension</finalizer>
          </applicationDeployment>
    </platform>
  </platforms>
</extension>

id:应用程序中将会试用此id

platform:平台类别        

nativeLibrary:源生库名称(这里为Android的jar包,ios为.a)        

initializer:com.yyf.nativeExtension.OrientationExtension 和Android库项目中路径匹配

finalizer:com.yyf.nativeExtension.OrientationExtension 和Android库项目中路径匹配

(源代码文章最后提供下载)

 

 

3. adt打包

 

新建一个文件夹,文件夹中文件如下图

注意:

extension.xml 为ActionScript库中对应的extension.xml文件

anetest.p12为自签名文件,这里也可以不给予签名。

 

Android-ARM文件夹中内容如下图

注意:catalog.xml节诶library.swf为Orientation.swc解压出来的文件。

 

adt指令:

注意:如果为配置环境变量,请进入flashbuilder包adt.bat所在的绝对路径

 

打包指令如下图:

注意:不要忘记最后的 空格 点。

打包成功后将会在同级目录生成com.yyf.orientation.ane文件。

 

 

3. Demo程序

 

导入要使用的ane文件:

 

 

导入并引用后,app-xml会自动生成如下代码:

注意:此id要和ActionScript库项目中extension.xml中写的id完全相同。

 

第一视图代码:

View Code
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        title="主页视图"
        creationComplete="view1_creationCompleteHandler(event)">
    <s:layout>
        <s:VerticalLayout/>
    </s:layout>
    <fx:Script>
        <![CDATA[
            import com.yyf.nativeExtensions.Orientation;
            import com.yyf.nativeExtensions.OrientationEvent;
            
            import mx.events.FlexEvent;
 
            private var g1:Orientation = null;
            
            protected function view1_creationCompleteHandler(event:FlexEvent):void
            {
                trace("I am rotate...");
                trace(Orientation.isSupported);
                lbl.text = Orientation.isSupported.toString();
                if(Orientation.isSupported)
                {
                    g1 = new Orientation();
                    g1.addEventListener(OrientationEvent.UPDATE,onChange1);
                    
                }else{
                    trace("no orientation"); 
                } 
            }
            
            private function onChange1(e:OrientationEvent):void{
                trace("From o1: " + e.x + " " + e.y + " " + " " + e.z);
                t1.text = e.x + " " + e.y + " " + " " + e.z; 
            } 
            
        ]]>
    </fx:Script>
    <fx:Declarations>
    </fx:Declarations>
    <s:VGroup>
        <s:Label id="lbl"/>
        <s:TextInput id="t1" />
    </s:VGroup>
</s:View>

(源代码文章最后提供下载)

 

 

三. 源码下载

 

必须用真机测试,源码下载地址:

Android库项目:

https://files.cnblogs.com/loveFlex/OrientationNative.rar

ActionScript库项目:

https://files.cnblogs.com/loveFlex/Lib_Orientation.rar

Demo示例程序:

https://files.cnblogs.com/loveFlex/Eg_1.rar

ANE打包文件夹:(包含jar、swc、ane)

https://files.cnblogs.com/loveFlex/Package_ANE_Android_Orientation.rar

 

 

原创作品,欢迎点评,欢迎转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
http://www.cnblogs.com/loveFlex/archive/2012/07/26/2610391.html
作者:binyy

有问题可以联系我,3Q~

 

 

 

 

 

posted on 2012-07-26 17:11  Binyy_Wuhan  阅读(2839)  评论(1编辑  收藏  举报