recorder-app.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import UNI_APP from '@/.env.js';
  2. const rc = uni.getRecorderManager();
  3. // 录音开始时间
  4. let startTime = null;
  5. let checkIsEnable = ()=>{
  6. return true;
  7. }
  8. let start = () => {
  9. return new Promise((resolve, reject) => {
  10. rc.onStart(() => {
  11. startTime = new Date();
  12. resolve()
  13. });
  14. rc.onError((e) => {
  15. console.log(e);
  16. reject(e)
  17. })
  18. rc.start({
  19. format: 'mp3' // 录音格式,可选值:aac/mp3
  20. });
  21. })
  22. }
  23. let close = () => {
  24. rc.stop();
  25. }
  26. let upload = () => {
  27. return new Promise((resolve, reject) => {
  28. rc.onStop((wavFile, a, b) => {
  29. uni.uploadFile({
  30. url: UNI_APP.BASE_URL + '/file/upload',
  31. header: {
  32. accessToken: uni.getStorageSync("loginInfo").accessToken
  33. },
  34. filePath: wavFile.tempFilePath,
  35. name: 'file',
  36. success: (res) => {
  37. let r = JSON.parse(res.data);
  38. if (r.code != 200) {
  39. reject(r.message);
  40. } else {
  41. const duration = (new Date().getTime() - startTime.getTime()) /
  42. 1000
  43. const data = {
  44. duration: Math.round(duration),
  45. url: r.data
  46. }
  47. resolve(data);
  48. }
  49. },
  50. fail: (e) => {
  51. reject(e);
  52. }
  53. })
  54. });
  55. })
  56. }
  57. export {
  58. checkIsEnable,
  59. start,
  60. close,
  61. upload
  62. }