ionic-framework - 录制的文件既不保存也不在cordova-plugin-media中播放(错误代码1)
问题描述
我正在使用这个插件: cordova-plugin-media
使用离子电容器而不是使用命令的科尔多瓦ionic cap sync
。
我的代码:
audioFile: MediaObject;
constructor(private media: Media, private plt: Platform, private file: File) {}
ionViewDidEnter() {
this.plt.ready()
.then(() => {
setTimeout(() => {
this.audioFile = this.media.create(this.file.externalRootDirectory + 'audiofile.mp3');
this.audioFile.onStatusUpdate.subscribe(status => console.log('status: ', status));
this.audioFile.onSuccess.subscribe(() => console.log('Action is successful'));
this.audioFile.onError.subscribe(error => console.log('Error: ', error));
}, 1000);
})
.catch(err => console.log('ready error: ', err));
}
record() {
// When record button clicked
this.audioFile.startRecord();
}
stop() {
// When stop button clicked
this.audioFile.stopRecord();
this.audioFile.play();
}
当我单击 Record btn 时,record()
执行并输出为:Error: 1
当我停止录制时,输出结果是status: 4
,Action is successful
我希望播放录音或进入audiofile.mp3
我的 android 设备的文件管理器,但我没有观察到任何内容。有人可以帮我解决这个问题吗?
我尝试了什么:
- 我认为它的扩展问题所以我尝试用 3gp 和 m4a 替换 mp3
- 我尝试使用 slice 方法
file://
删除-file.externalRootDirectory
file.externalRootDirectory.slice(7)
- 我还尝试了 applicationDirectory 和 externalDataDirectory 而不是 externalRootDirectory
- 我还在他们的github 存储库上提交了我的问题,但我还没有得到任何回复
- 我尝试在其他社区和 stackoverflow 上寻找解决方案,但问题仍然存在
解决方案
Android 10 使用新的文件系统,因此未自行更新的插件可能无法在 Android 10 上读取/创建文件。
您需要在清单文件中手动添加此行:android:requestLegacyExternalStorage="true"
- 在 Android Studio 中打开您的项目并打开 AndroidManifest 文件。
- 在清单文件中的标记中,添加 android:requestLegacyExternalStorage="true"
- 重建你的项目
推荐阅读
- laravel - Laravel 根据数据库设置记录到通道
- visual-studio - NuGet 包还原失败
- mysql - 如何使用 SQL 中的事务将数据从一个表插入到另一个表?
- c++ - MFC:为什么会发生这种堆损坏?(array_s.cpp / afxcoll.inl)
- ms-access - 运行访问查询时出现语法错误,请指导
- javascript - 以html字符串格式迭代以创建动态表
- javascript - 检测天气用户是否在反应js和javascript中滚动div的底部
- python - 我应该如何改进我的样式(python 类、Django 模型)?
- reactjs - 道具验证中缺少 Redux 子项
- python - 使用 keras 自定义函数时,反向传播是否会自动使用自定义函数的正确公式进行操作?