我正在使用Cordova构建我的移动应用程序,我需要录制声音 我正在使用媒体捕获插件,该插件在此功能中启动默认的Android录制器应用程序:
private void captureAudio() {
Intent intent = new Intent(android.provider.MediaStore.Audio.Media.RECORD_SOUND_ACTION);
this.cordova.startActivityForResult((CordovaPlugin) this, intent, CAPTURE_AUDIO);
}
问题是,在我获得文件路径并尝试getAudioVideoData
(其中包含“持续时间”之类的信息)后,音频录制格式(默认为.amr)似乎无法解析并抛出异常。
private JSONObject getAudioVideoData(String filePath, JSONObject obj, boolean video) throws JSONException {
MediaPlayer player = new MediaPlayer();
try {
player.setDataSource(filePath);
player.prepare();
obj.put("duration", player.getDuration() / 1000);
if (video) {
obj.put("height", player.getVideoHeight());
obj.put("width", player.getVideoWidth());
}
} catch (IOException e) {
Log.d(LOG_TAG, "Error: loading video file");
}
return obj;
}
我知道问题是媒体格式,因为在我的旧设备上,使用4.4.4,录音机应用程序具有我可以更改文件类型的设置,如果我将其设置为.wav,则设置为{{1工作!
我尝试在getAudioVideoData
之前在captureAudio()
内添加以下内容:
startActivityForResult()
..但没有成功。
答案 0 :(得分:0)
我无法通过意图找到影响录音机应用输出的方法,但我解决了主要问题,即我无法读取录制的音频文件的元数据(持续时间属性)。
修正了此PR:https://github.com/apache/cordova-plugin-media-capture/pull/50