【Egret】原生打包調用系統震動功能

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!這篇簡單的教程就介紹到這裏,如果你還不太會使用,或者實際照做中遇到一些問題,可以下載我提供的附件連接。查看其中的項目代碼細節。

 

點擊下載

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章