ANE【原創】FlexMobile Ios/Android 電子羅盤方位角 (二)

來源:互聯網
上載者:User

二. 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庫項目:

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

ActionScript庫項目:

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

Demo樣本程式:

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

ANE打包檔案夾:(包含jar、swc、ane)

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

 

 

原創作品,歡迎點評,歡迎轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本聲明。否則將追究法律責任。http://www.cnblogs.com/loveFlex/archive/2012/07/26/2610391.html作者:binyy

有問題可以聯絡我,3Q~

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.