【问题标题】:ngCordova capture - property 'capture' undefinedngCordova 捕获 - 属性“捕获”未定义
【发布时间】:2015-03-29 18:05:42
【问题描述】:

我今天正在编写我的第一个 Cordova 和 Ionic 代码。我想拍摄视频,但失败了。除了创建一个空白的 Ionic 项目之外,我还做了以下工作:

  1. bower install ngCordova
  2. <script src="lib/ngCordova/dist/ng-cordova.js"></script> 添加到index.html
  3. cordova plugin add org.apache.cordova.media-capture

我的 index.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title></title>


    <!-- compiled css output -->
    <link href="css/ionic.app.css" rel="stylesheet">

    <!-- ionic/angularjs js -->
    <script src="lib/ionic/js/ionic.bundle.js"></script>

    <!-- cordova script (this will be a 404 during development) -->
    <script src="lib/ngCordova/dist/ng-cordova.js"></script>
    <script src="cordova.js"></script>

    <!-- your app's js -->
    <script src="js/app.js"></script>
  </head>
  <body ng-app="locoqr" ng-controller="VideoCtrl">

    <ion-pane>
      <ion-header-bar class="bar bar-header bar-calm">
        <h1 class="title">LocoQR</h1>
      </ion-header-bar>
      <ion-content style="padding: 10px">
          <button class="button button-block button-positive icon ion-videocamera" ng-click="onCaptureVideoClick()">
              Capture a video
          </button>
      </ion-content>
    </ion-pane>
  </body>
</html>

还有 app.js:

angular.module('locoqr', ['ionic', 'ngCordova'])

.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();
    }
  });
})

.controller('VideoCtrl', function($scope, $ionicPlatform, $cordovaCapture) {
        $scope.onCaptureVideoClick = function() {
            $ionicPlatform.ready(function() {
                var options = { limit: 3, duration: 15 };
                $cordovaCapture.captureVideo(options).then(function(videoData) {
                    console.log('hooray');
                }, function(err) {
                    console.log('sad :(');
                });
            });
        };
});

我什至不知道如何正确调试,但这就是我从 adb logcat 得到的:

D/CordovaLog(31220): file:///android_asset/www/lib/ionic/js/ionic.bundle.js: Line 19532 : TypeError: Cannot read property 'capture' of undefined
D/CordovaLog(31220):     at Object.captureVideo (file:///android_asset/www/lib/ngCordova/dist/ng-cordova.js:1149:30)
D/CordovaLog(31220):     at file:///android_asset/www/js/app.js:20:33
D/CordovaLog(31220):     at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:43976:19
D/CordovaLog(31220):     at Object.ionic.Platform.ready (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:2117:9)
D/CordovaLog(31220):     at Object.self.ready (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:43974:26)
D/CordovaLog(31220):     at Scope.$scope.onCaptureVideoClick (file:///android_asset/www/js/app.js:18:28)
D/CordovaLog(31220):     at $parseFunctionCall (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:20270:18)
D/CordovaLog(31220):     at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:52468:9
D/CordovaLog(31220):     at Scope.$eval (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:22326:28)
D/CordovaLog(31220):     at Scope.$apply (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:22425:23)
I/chromium(31220): [INFO:CONSOLE(19532)] "TypeError: Cannot read property 'capture' of undefined
I/chromium(31220):     at Object.captureVideo (file:///android_asset/www/lib/ngCordova/dist/ng-cordova.js:1149:30)
I/chromium(31220):     at file:///android_asset/www/js/app.js:20:33
I/chromium(31220):     at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:43976:19
I/chromium(31220):     at Object.ionic.Platform.ready (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:2117:9)
I/chromium(31220):     at Object.self.ready (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:43974:26)
I/chromium(31220):     at Scope.$scope.onCaptureVideoClick (file:///android_asset/www/js/app.js:18:28)
I/chromium(31220):     at $parseFunctionCall (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:20270:18)
I/chromium(31220):     at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:52468:9
I/chromium(31220):     at Scope.$eval (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:22326:28)
I/chromium(31220):     at Scope.$apply (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:22425:23)", source: file:///android_asset/www/lib/ionic/js/ionic.bundle.js (19532)

感谢您的帮助。

【问题讨论】:

  • 您找到解决方案了吗?
  • @aliasav 有点——我停止使用 Ionic。 :)

标签: javascript android angularjs cordova ionic-framework


【解决方案1】:

遇到同样的问题,安装解决了:

"cordova 插件添加 cordova-plugin-photokandy-video-thumbnail"

然后刷新平台文件:

离子平台删除 [平台]

"离子平台添加 [平台]"

我希望能帮助像我一样遇到同样问题的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2016-11-03
    • 2011-01-05
    • 2016-01-02
    相关资源
    最近更新 更多