1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
| import {
| TEMP_PATH
| } from '../constants'
|
| import {
| publish
| } from '../../bridge'
|
| let recorder
| let recordTimeout
|
| const publishRecorderStateChange = (state, res = {}) => {
| publish('onRecorderStateChange', Object.assign({
| state
| }, res))
| }
|
| const Recorder = {
| start ({
| duration = 60000,
| sampleRate,
| numberOfChannels,
| encodeBitRate,
| format = 'mp3',
| frameSize,
| audioSource = 'auto'
| }, callbackId) {
| if (recorder) {
| return publishRecorderStateChange('start')
| }
| recorder = plus.audio.getRecorder()
| recorder.record({
| format,
| samplerate: sampleRate,
| filename: TEMP_PATH + '/recorder/'
| }, res => publishRecorderStateChange('stop', {
| tempFilePath: res
| }), err => publishRecorderStateChange('error', {
| errMsg: err.message
| }))
| recordTimeout = setTimeout(() => {
| Recorder.stop()
| }, duration)
| publishRecorderStateChange('start')
| },
| stop () {
| if (recorder) {
| recorder.stop()
| recorder = false
| recordTimeout && clearTimeout(recordTimeout)
| }
| },
| pause () {
| if (recorder) {
| publishRecorderStateChange('error', {
| errMsg: 'Unsupported operation: pause'
| })
| }
| },
| resume () {
| if (recorder) {
| publishRecorderStateChange('error', {
| errMsg: 'Unsupported operation: resume'
| })
| }
| }
| }
|
| export function operateRecorder ({
| operationType,
| ...args
| }, callbackId) {
| Recorder[operationType](args)
| return {
| errMsg: 'operateRecorder:ok'
| }
| }
|
|