Ionic 录音插件

本文介绍 Ionic cordova 平台下两个录音插件 cordova-plugin-media-capture 和 cordova-plugin-media的使用。

1. cordova-plugin-media-capture

1. 安装

①  进入项目的根目录。

②  安装 cordova plugin:sudo ionic cordova plugin add cordova-plugin-media-capture

③  安装ionic native plugin:sudo npm install --save @ionic-native/media-capture

2. 使用

import { MediaCapture, MediaFile, CaptureError, CaptureAudioOptions } from '@ionic-native/media-capture';									
									
@Component({									
    providers: [MediaCapture]									
})									
									
constructor(public mediaCapture: MediaCapture) {}									
…									
									
let options: CaptureAudioOptions = { limit: 1, duration: 10 };									
this.mediaCapture.captureAudio(options).then(									
    function (mediaFiles: MediaFile[]) { },									
    function (err: CaptureError) { }									
);	

3. 权限

config.xml:

<edit-config target="NSMicrophoneUsageDescription" file="*-Info.plist" mode="merge">									
    <string>need microphone access to record sounds</string>				
</edit-config>	

ios:

<key>NSMicrophoneUsageDescription</key>							
<string>need microphone access to record sounds</string>	

android:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />									
<uses-permission android:name="android.permission.RECORD_AUDIO" />									
<uses-permission android:name="android.permission.RECORD_VIDEO" />									
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

4. 设置比特率

ios 平台下通过修改 CDVCapture.m 设置比特率。


5. 设置保存路径

ios:默认保存路劲为 /var/mobile/Containers/Data/Application/UUID/tmp/xxx.wav,可以通过修改 CDVCapture.m 更改保存路径。

android:默认保存路径为 file:///storage/emulated/0/Recordings/xxx.amr by default,可以通过修改 Capture.java 更改保存路径。

6. 上传

android 和 ios 都可通过 File Transfer Plugin 将录音文件上传至服务器。

安装 cordova plugin:sudo ionic cordova plugin add cordova-plugin-file-transfer

安装 ionic native plugin:sudo npm install --save @ionic-native/file-transfer

使用:

import { FileTransfer, FileUploadOptions, FileTransferObject, FileUploadResult } from '@ionic-native/file-transfer';											
											
@Component({											
  providers: [FileTransfer, FileTransferObject]											
})											
											
constructor(public ft: FileTransfer) {}											
...											
											
let options: FileUploadOptions = {											
  fileKey: "file",											
  fileName: "file.wav",											
  mimeType: "audio/wav"											
};											
											
const ftObj: FileTransferObject = this.ft.create();											
ftObj.upload(this.file.documentsDirectory.replace(/^file:\/\//, '') + 'file.wav',											
  encodeURI("http://xxx/upload.php"), options).then(											
  (data) => {											
    alert("File upload success!");											
  },											
  (err) => {											
    alert("File upload fail!");											
  });	

服务器端处理上传的代码:

<?php 
header('Access-Control-Allow-Origin: *');

if(move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]))
{
	echo 'upload success!!!';
} else {
	echo 'upload fail!!!';
}
?>

2. cordova-plugin-media

1. 安装

①  进入项目的根目录。

②  安装 cordova plugin: sudo ionic cordova plugin add cordova-plugin-media

③  安装ionic native plugin:sudo npm install --save @ionic-native/media

2. 使用

import { Media, MediaObject } from '@ionic-native/media';               
import { File } from '@ionic-native/file';                
                
@Component({                
    providers: [Media, File]                
})                
                
constructor(public media: Media, public file: File) { }               
…               
                
let mediaObj;               
mediaObj = this.media.create("file.wav");               
mediaObj.startRecord();                 
mediaObj.onSuccess.subscribe(() => alert('Record success!'));               
mediaObj.onError.subscribe(err => alert('Record fail! Error: ' + err));               
window.setTimeout(() => mediaObj.stopRecord(), 10 * 1000); 

3. 权限

config.xml:

<edit-config target="NSMicrophoneUsageDescription" file="*-Info.plist" mode="merge">             
    <string>need microphone access to record sounds</string>                
</edit-config>  

ios:

<key>NSMicrophoneUsageDescription</key>							
<string>need microphone access to record sounds</string>	

android:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />         
<uses-permission android:name="android.permission.RECORD_AUDIO" />                
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />         
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

4. 设置比特率

ios 平台下通过修改 CDVSound.m 设置比特率。


5. 设置保存路径

android 和 ios 均可通过 File Plugin 的 createFile 去创建文件,改文件路径即为录音文件的保存路径。

6. 上传

android 和 ios 都可通过 File Transfer Plugin 将录音文件上传至服务器。

安装 cordova plugin:sudo ionic cordova plugin add cordova-plugin-file-transfer

安装 ionic native plugin:sudo npm install --save @ionic-native/file-transfer

使用:

import { FileTransfer, FileUploadOptions, FileTransferObject, FileUploadResult } from '@ionic-native/file-transfer';											
											
@Component({											
  providers: [FileTransfer, FileTransferObject]											
})											
											
constructor(public ft: FileTransfer) {}											
...											
											
let options: FileUploadOptions = {											
  fileKey: "file",											
  fileName: "file.wav",											
  mimeType: "audio/wav"											
};											
											
const ftObj: FileTransferObject = this.ft.create();											
ftObj.upload(this.file.documentsDirectory.replace(/^file:\/\//, '') + 'file.wav',											
  encodeURI("http://xxx/upload.php"), options).then(											
  (data) => {											
    alert("File upload success!");											
  },											
  (err) => {											
    alert("File upload fail!");											
  });			

服务器端处理上传的代码:

<?php 
header('Access-Control-Allow-Origin: *');

if(move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]))
{
	echo 'upload success!!!';
} else {
	echo 'upload fail!!!';
}
?>

3. 两个录音插件的比较

测试版本: 

ios 10.3.2  
android 6.0 
cordova-plugin-media-capture@2.0.0  
cordova-plugin-media@4.0.0  


4. 完整代码

https://gitee.com/AuroraDuring/codes/uj6dl3bx5ho8f20qges7k84



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员X小鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值