http://ashan.org/post-547.html
不知道有多少人使用Egret的原生打包功能。大家如果遇到問題可以到Egret社區去提問,bbs.egret-labs.org
使用原生打包可以假如一些系統功能,我們可以稱之爲native擴展。通過這種方式,你可以調用陀螺儀,定位服務以及震動攝像頭等等。這篇文章中拋磚引玉,教大家如何去打包原生應用並且調用系統的震動功能。
我們先創建一個Egret項目,爲了演示功能,我也不做特別的功能,在舞臺上繪製一個紅色的正方形,當用戶點擊後,可以觸發震動事件,讓手機不停的震動。
關鍵代碼如下:
var shp:egret.Shape = new egret.Shape(); shp.graphics.beginFill(0xff0000); shp.graphics.drawRect(0,0,100,100); shp.graphics.endFill(); this.addChild(shp); shp.touchEnabled = true; shp.addEventListener(egret.TouchEvent.TOUCH_BEGIN,this.clicks,this); private clicks(evt:egret.TouchEvent):void { egret.ExternalInterface.call("zd","s"); }
其中最關鍵的代碼就是調用egret.ExternalInterface.call這個函數,通過它,我們可以呼叫native層的響應代碼。值得注意的是,”zd” 是我們定義的指令,標識震動,你可以任意命名,而第二個參數沒有任何意義,它本來是讓我們在調用native功能時傳遞的參數,但由於這個實例中不涉及任何傳參問題,所以我們隨便傳入一個參數即可。
使用一個egret create_app 命令創建一個android項目後,我們需要自己創建一個類。具體代碼如下:
package org.egret.java.androidd; import android.os.Vibrator; import android.content.Context; import android.app.Activity; import org.egret.java.externalInterface.IExternalInterface; public class EgretZhendong implements IExternalInterface { @Override public void call(String arg0) { Vibrator vibrator = (Vibrator)act.getSystemService(Context.VIBRATOR_SERVICE); long [] pattern = {100,400,100,400}; // 停止 開啓 停止 開啓 vibrator.vibrate(pattern,2); } private Activity act; public void setActivity(Activity value) { act = value; } }
需要注意的一點是,函數call是必須要實現的,用於執行我們的響應的代碼,而setActivity函數是我自己編寫的。由於調用震動功能需要使用到Activity這個類的實例對象,所以由外界傳值進行應用。
然後你要做的是在你的Java代碼的入口類當中,我這裏是org.egret.java.android.androidd.java。這個名稱會根據你的項目名稱而決定。很容易找到,你在android工程中的src中就可以找到它。
在這個類中的onCreate方法中最後面編寫你的代碼。
ExternalInterface.getInstance().run(); EgretZhendong edz = new EgretZhendong(); edz.setActivity(this); ExternalInterface.getInstance().addCallBack("zd", edz);
即使你沒有編寫過Java代碼,你也可以看明白這段代碼是什麼意思,無非就是創建我們剛纔所定義的EgretZhendong類,然後通過ExternalInterface.getInstance().addCallBack(“zd”, edz);來綁定我們調用的口令和指定響應功能的對象而已。
完成了這部分功能後,我們來接上手機,直接測試一下。如果你的代碼完全正確。那麼你可以看到一個默認的Hello World界面,點擊左上角的紅色方塊,手機開始不停的震動。
如果你在調試的時候發現android項目報錯,請在AndroidManifest.xml中增加下面這行配置,調用震動需要獲取系統權限。
<uses-permission android:name="android.permission.VIBRATE" />
OK!這篇簡單的教程就介紹到這裏,如果你還不太會使用,或者實際照做中遇到一些問題,可以下載我提供的附件連接。查看其中的項目代碼細節。