Android - 从Intent

时间:2016-02-01 08:25:05

标签: android cordova android-intent mime-types audio-recording

我正在使用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()

..但没有成功。

1 个答案:

答案 0 :(得分:0)

我无法通过意图找到影响录音机应用输出的方法,但我解决了主要问题,即我无法读取录制的音频文件的元数据(持续时间属性)。

修正了此PR:https://github.com/apache/cordova-plugin-media-capture/pull/50