使用原生打包可以假如一些系统功能,我们可以称之为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!这篇简单的教程就介绍到这里!
本文暂时没有评论,来添加一个吧(●'◡'●)