老虎
老虎
  • 发布:2016-01-29 12:19
  • 更新:2016-01-29 12:59
  • 阅读:1423

【报Bug】不支持NavtiveJS的振动Vibrator

分类:Native.js
    var Vibrator = plus.android.importClass("android.os.Vibrator");//此行代码好像没起作用!  
    var Context = plus.android.importClass("android.content.Context");  
    var vib = plus.android.runtimeMainActivity().getSystemService(Context.VIBRATOR_SERVICE);  
    vib.vibrate(2000);//这个方法会报错!  

运行时 vib.vibrate(2000);这行出错:
Uncaught TypeError: undefined is not a function

注意:不能选择Service,必须要用Context!否则报错!
var Service = plus.android.importClass("android.os.Service");

2016-01-29 12:19 负责人:无 分享
已邀请:
老虎

老虎 (作者)

勉强的解决方法:

只能用plus.android.invoke()
http://www.html5plus.org/doc/zh_cn/android.html#plus.android.invoke

var vib = plus.android.runtimeMainActivity().getSystemService("vibrator");  
plus.android.invoke( vib, "vibrate",2000);  
//vib.vibrate(2000);//不能用此方法!会报错!
老虎

老虎 (作者)

另外,NativeJS也不支持振动的模式参数:

var vib = plus.android.runtimeMainActivity().getSystemService("vibrator");  
plus.android.invoke( vib, "vibrate",2000, 500,1000);

var vib = plus.android.runtimeMainActivity().getSystemService("vibrator");  
plus.android.invoke( vib, "vibrate",[2000, 500, 1000]);

var vib = plus.android.runtimeMainActivity().getSystemService("vibrator");  
var myarg = new Array();  
myarg[0] = 1000;  
myarg[1] = 10;  
myarg[2] = 100;  
myarg[3] = 1000;  
plus.android.invoke( vib, "vibrate",myarg );

以上均报错:
Uncaught vibrate;Attempt to invoke virtual method 'java.lang.Class java.lang.reflect.Method.getReturnType()' on a null object reference

老虎

老虎 (作者)

另外,注意:如果手机不出来振动而又不报错,查看一下是否手机设置了省电模式、省电助手等!这些方式可能禁止了振动。

该问题目前已经被锁定, 无法添加新回复