【发布时间】:2016-05-09 15:08:33
【问题描述】:
我正在使用 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 的旧版 Android 设备上,录音机应用程序具有可以更改文件类型以及如果我将其设置为 .wav 的设置,而不是 getAudioVideoData有效!
我尝试在captureAudio() 之前添加以下内容startActivityForResult():
intent.putExtra(android.provider.MediaStore.Audio.Media.ENTRY_CONTENT_TYPE, "audio/aac");
intent.putExtra(android.provider.MediaStore.Audio.Media.MIME_TYPE, "audio/aac");
intent.putExtra(android.provider.MediaStore.Audio.Media.CONTENT_TYPE, "audio/aac");
..但没有成功。
【问题讨论】:
标签: android cordova android-intent mime-types audio-recording