Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

cordova media-capture插件

$
0
0


介绍

这个插件提供了访问设备的图像、音频录制和视频录制能力。

 

 

 

 

 

安装

cordova plugin add cordova-plugin-media-capture

 

 

 

 

 

使用方法

这个插件定义了全局navigator.device.capture对象

虽然在全局范围内,但是需要使用在deviceready事件之后。

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {

    console.log(navigator.device.capture);

}

 

 

 

 

 

支持的平台Supported Platforms

· Amazon Fire OS

· Android

· BlackBerry 10

· Browser

· iOS

· Windows Phone 7 and 8

· Windows 8

· Windows

 

 

 

 

 

 

 

对象Objects

· Capture

· CaptureAudioOptions

· CaptureImageOptions

· CaptureVideoOptions

· CaptureCallback

· CaptureErrorCB

· ConfigurationData

· MediaFile

· MediaFileData

 

 

 

 

方法Methods

· capture.captureAudio

· capture.captureImage

· capture.captureVideo

· MediaFile.getFormatData

 

 

 

属性Properties

supportedAudioModes设备所支持的音频格式。(组态资料[ ]

supportedImageModes记录图像的大小和格式支持的设备。(组态资料[ ]

supportedVideoModes录音录像设备所支持的分辨率和格式。(组态资料[ ]

 

 

 

 

capture.captureAudio

开始对捕获的音频剪辑文件的录音机应用程序并返回信息。

navigator.device.capture.captureAudio(

    CaptureCB captureSuccess, CaptureErrorCB captureError,  [CaptureAudioOptions options]

);

  

支持的平台Supported Platforms

· Amazon Fire OS

· Android

· BlackBerry 10

· iOS

· Windows Phone 7 and 8

· Windows 8

· Windows

 

  

 

 

 

capture.captureImage

启动相机应用和返回信息的捕获的图像文件。

navigator.device.capture.captureImage(

    CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureImageOptions options]

);

  

支持的平台Supported Platforms

· Amazon Fire OS

· Android

· BlackBerry 10

· Browser

· iOS

· Windows Phone 7 and 8

· Windows 8

· Windows

 

 

 

 

capture.captureVideo

开始拍摄的视频剪辑文件的视频录像机应用并返回信息。

navigator.device.capture.captureVideo(

    CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureVideoOptions options]

);

  

支持的平台Supported Platforms

· Amazon Fire OS

· Android

· BlackBerry 10

· iOS

· Windows Phone 7 and 8

· Windows 8

· Windows

 

 

 

 

  

 

 

示例

示例一:

打开手机系统默认录音机,录音完毕后,输出录音文件对象,取出对象内的信息

 index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
    <title>Hello World</title>
    <style>
         .line{
              padding: 10px;
         }
    </style>
</head>
<body>
<div class="app">
    <h1>MediaCapture插件</h1>
    <div class="line"><button id="record">开始录音</button></div>

</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>  

  

index.js

var app = {
    // Application Constructor
    initialize: function() {
        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
    },
    onDeviceReady: function() {
        var _this = this;
        document.getElementById("record").onclick = function(){
            _this.audioCapture();
        }
    },
    audioCapture: function() {
      // 开始录音(最长录制时间:10秒)
      navigator.device.capture.captureAudio(onSuccess, onError, {duration: 10});
 
      // 录制成功
      function onSuccess(mediaFiles) {
         var i, len;
        // 遍历获取录制的文件
                // 注意:iOS只支持一次录制一个视频或音频
        for (i = 0, len = mediaFiles.length; i < len; i += 1) {
          console.log(mediaFiles[i]);
          var path = mediaFiles[i].fullPath;
                        path = decodeURIComponent(path);
                    var localURL = mediaFiles[i].localURL;
                        localURL = decodeURIComponent(localURL);
          alert("录制成功!\n\n"
             + "文件名:" + mediaFiles[i].name + "\n"
             + "大小:" + mediaFiles[i].size + "\n\n"
             + "localURL地址:" + localURL + "\n\n"
             + "fullPath地址:" + path);
         }
       }
 
       //录制失败
       function onError(error) {
          alert('录制失败!错误码:' + error.code);
       }
     }

};

app.initialize();

 

运行:


点击“开始录音”按钮后,会打开手机系统的录音机

 

 

弹窗显示内容


备注:

返回的MediaFile对象内的url会有编码问题

 

需要使用decodeURIComponent函数进行解码,否则就是这样



 

 

 

示例二:

录像功能
打开手机系统摄像头,录像完毕后,输出视频文件对象,取出对象内的信息

index.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
    <title>Hello World</title>
    <style>
         .line{
              padding: 10px;
         }
    </style>
</head>
<body>
<div class="app">
    <h1>MediaCapture插件</h1>
    <div class="line"><button id="video">开始录像</button></div>

</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>     

 

 

index.js

var app = {
    // Application Constructor
    initialize: function() {
        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
    },
    onDeviceReady: function() {
        var _this = this;
        document.getElementById("video").onclick = function(){
            _this.videoCapture();
        }
    },
    videoCapture: function() {
    //开始录像(最长录制时间:10秒)
    navigator.device.capture.captureVideo(onSuccess, onError, {duration: 10});
 
    //录制成功
    function onSuccess(mediaFiles) {
      var i, path, len;
      //遍历获取录制的文件(iOS只支持一次录制一个视频或音频)
      for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        console.log(mediaFiles);
        path = mediaFiles[i].fullPath;
        alert("录制成功!\n\n"
           + "文件名:" + mediaFiles[i].name + "\n"
            + "大小:" + mediaFiles[i].size + "\n\n"
           + "localURL地址:" + mediaFiles[i].localURL + "\n\n"
           + "fullPath地址:" + path);
      }
    }
 
        //录制失败
    function onError(error) {
      alert('录制失败!错误码:' + error.code);
    }
                
    }

};

app.initialize();

 

运行:

点击“开始录像”


打开手机摄像头进行录像


录像完毕后确认


弹窗显示录像的信息内容





作者:michael_ouyang 发表于2017/7/24 12:59:14 原文链接
阅读:26 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles