Skip to content

Sự kiện ​

Mọi sự kiện đều là props của WaveformRecorderView. Kiểu dữ liệu của payload có trong tài liệu API.

Sự kiệnPayloadKhi nào
onStateChange{ state, durationMs }Mỗi lần đổi trạng thái.
onMeter{ amplitude, peak, db }meterUpdatesPerSecond lần mỗi giây khi đang ghi.
onCompletexem bên dướiMột lần, khi tệp cuối cùng đã ghi xong sau stop() hoặc khi tự dừng.
onMaxDurationReachedkhông cóKhi đạt maxDurationMs, ngay trước lúc tự dừng.
onPermissionDeniedkhông cóKhi start() không xin được quyền micro.
onError{ message, code? }Cảnh báo và lỗi, xem code lỗi.
onSeek{ positionMs }Khi nghe lại, lúc kết thúc thao tác tua và sau seekPreview().
onPlaybackTimeUpdate{ positionMs, durationMs }Khoảng 30 lần mỗi giây khi âm thanh nghe lại đang phát.
onSlideProgress{ cancelProgress, lockProgress }Khi người dùng kéo trên view trong lúc ghi.
onSlideCancelkhông cóMột lần mỗi lần kéo, khi vượt ngưỡng hủy.
onSlideLockkhông cóMột lần mỗi lần kéo, khi vượt ngưỡng khóa.
onSilenceDetected{ durationMs }Một lần cho mỗi khoảng lặng, xem Phát hiện khoảng lặng.
onPcmChunk{ chunk, sampleRate, channels, bytesPerSample, timestampMs }Khoảng mỗi pcmChunkMs khi luồng PCM đang bật, xem Luồng PCM.

onStateChange ​

state là một trong 'idle', 'recording', 'paused', 'preview', 'stopped' hoặc 'error'. durationMs là thời lượng đã ghi tới lúc đó, không tính thời gian tạm dừng. Các bước chuyển trạng thái có ở Đoạn ghi, tạm dừng và nghe lại.

onMeter ​

TrườngÝ nghĩa
amplitudeMức âm hiện tại trong [0, 1], chính là giá trị dùng cho cột mới nhất.
peakamplitude cao nhất từ đầu phiên tới giờ.
dbMức âm hiện tại theo dBFS. 0 là mức tối đa, càng nhỏ càng âm.

Hai nền tảng đo mức âm theo cách khác nhau, nên cùng một âm thanh sẽ cho số khác nhau. iOS báo công suất trung bình trong nhịp vừa qua và quy đổi theo 10^(db / 20), mọi giá trị từ -60 dB trở xuống được hiển thị là 0. Android báo giá trị đỉnh kể từ nhịp trước và quy đổi bằng căn bậc hai của giá trị đỉnh tuyến tính. Đừng so sánh giá trị thô giữa hai nền tảng.

onComplete ​

TrườngKiểuÝ nghĩa
uristringURI file:// của bản ghi.
durationMsnumberThời lượng đã ghi, cộng dồn qua mọi đoạn.
formatstringGiá trị output.format bạn đã chọn.
mimeTypestringKiểu MIME, xem Định dạng.
sizeBytesnumberKích thước tệp.
sampleRatenumberSample rate tính bằng Hz.
channelsnumberSố kênh.
samplesnumber[]64 giá trị trong [0, 1] cho bong bóng chat, xem Xuất 64 cột.
peakAmplitudenumberamplitude cao nhất của cả phiên.

onComplete không được gọi khi chưa ghi được gì, khi gọi cancel(), hoặc khi minDurationMs bỏ bản ghi.

Code lỗi ​

onError dùng cho cả lỗi thật lẫn cảnh báo về những lời gọi bị bỏ qua. Hãy kiểm tra code:

CodeÝ nghĩa
startBộ ghi không khởi động được. Trạng thái chuyển sang 'error'.
sessioniOS không cấu hình được audio session. Trạng thái chuyển sang 'error'.
resumeGhi tiếp sau pause() thất bại. Trạng thái chuyển sang 'error'.
media-recorderAndroid: MediaRecorder báo lỗi trong lúc ghi.
min-durationGọi stop() khi chưa đủ minDurationMs. Bản ghi đã bị bỏ.
preview-disabledGọi enterPreview() khi enablePreview={false}.
continue-disabledGọi resume() khi đang nghe lại mà enableContinueRecording={false}.
preview-snapshotKhông chuẩn bị được bản nghe lại, ví dụ vì chưa ghi được gì.
preview-loadTrình phát không nạp được âm thanh để nghe lại.
concatNối các đoạn ghi thất bại. onComplete vẫn được gọi với đoạn đầu tiên để không mất âm thanh.
format-unsupportedChọn opus trên Android dưới API 29. Engine ghi AAC thay thế.
pcm-streamiOS: luồng PCM không mở được tệp WAV.
background-capabilityiOS: bật backgroundRecording nhưng thiếu audio trong UIBackgroundModes. Chỉ gọi một lần.

Từ trạng thái 'error', gọi start() sẽ bắt đầu một phiên mới.

Phát hành theo giấy phép MIT.