Egret原生打包调用系统震动功能

不知道有多少人使用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!这篇简单的教程就介绍到这里,如果你还不太会使用,或者实际照做中遇到一些问题,可以下载我提供的附件连接。查看其中的项目代码细节。

点击下载