二. 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~