Android - 从 Intent 设置录音机 mime 类型
Android - set Sound Recorder mime type from Intent
我正在使用 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
(其中包含 "duration" 等信息)之后,录音格式(默认为 .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;
}
我知道问题出在媒体格式上,因为在我的旧 Android 设备上,4.4.4 录音机应用程序有设置,我可以从那里更改文件类型,如果我将它设置为 .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");
..但没有成功。
我找不到通过意图影响录音机应用程序输出的方法,但我解决了主要问题,即我无法读取录制的音频文件的元数据(持续时间 属性) .
已修复此 PR:https://github.com/apache/cordova-plugin-media-capture/pull/50
我正在使用 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
(其中包含 "duration" 等信息)之后,录音格式(默认为 .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;
}
我知道问题出在媒体格式上,因为在我的旧 Android 设备上,4.4.4 录音机应用程序有设置,我可以从那里更改文件类型,如果我将它设置为 .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");
..但没有成功。
我找不到通过意图影响录音机应用程序输出的方法,但我解决了主要问题,即我无法读取录制的音频文件的元数据(持续时间 属性) .
已修复此 PR:https://github.com/apache/cordova-plugin-media-capture/pull/50