离子ng-cordova振动插件无法正常工作

时间:2015-05-11 11:47:00

标签: angularjs cordova ionic ngcordova

我是离子和cordova的新手,这个振动插件无效。 你能指出错误吗?

这是index.html:

<body ng-app="starter">
    <ion-pane>
        <ion-header-bar class="bar-stable">
            <h1 class="title">Ionic Blank Starter</h1>
        </ion-header-bar>
        <ion-content ng-controller="myCtrl">
            <button ng-click="toggle()">Toggle</button>
        </ion-content>
    </ion-pane>
</body>

这是js文件夹中的app.js:

var ionicApp = angular.module('starter', ['ionic', 'ngCordova'])

ionicApp.controller("myCtrl", function($scope, $cordovaVibration)) {

    $scope.toggle = function() {
        $ionicPlatform.ready(function() {
            $cordovaVibration.vibrate(100).then(function() {
                console.log("Phone vibrating");
            })

        });

    }

}

.run(function($ionicPlatform) {
    $ionicPlatform.ready(function() {
        // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
        // for form inputs)
        if (window.cordova && window.cordova.plugins.Keyboard) {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        }
        if (window.StatusBar) {
            StatusBar.styleDefault();
        }
    });
})

我添加了ng-cordova振动插件。

2 个答案:

答案 0 :(得分:2)

我有同样的问题,我的解决方案是添加了Cordova插件,看来你已经解决了这个问题:这是我与你的项目的不同之处:

我使用此版本的平台就绪

    $scope.toggle = function() {
      document.addEventListener( "deviceready", function() {
           $cordovaVibration.vibrate( 2000 ); }, false );
    };

我的离子App定义我首先放置了ngCordova hookup。虽然这可能不是问题

var ionicApp = angular.module('starter', ['ngCordova','ionic' ])

解决问题的方法是正确安装插件:尝试:

 cordova plugin add cordova-plugin-vibration

而不是官方网站上写着:

cordova plugin add org.apache.cordova.vibration

我将权限添加到/platforms/android/AndroidManifest.xm。虽然这似乎没有必要,因为我相信离子构建或离子运行发现你正在使用振动并为自己添加它

  <uses-permission android:name="android.permission.VIBRATE" />

答案 1 :(得分:1)

在设备上进行测试时,请确保设备未静音。许多(大多数)设备将“静音”振动和音频。如果您在浏览器中进行调试,则应该看到“为Xms振动”。在控制台中,“X”是您提供给振动功能的毫秒数。这告诉你插件工作(显然你不能振动你的电脑)。但是,再一次,在设备上进行测试时,请确保它不是静音。