【问题标题】:Android - set Sound Recorder mime type from IntentAndroid - 从 Intent 设置录音机 mime 类型
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2011-07-04
      • 2012-11-05
      • 2015-03-01
      • 2020-09-07
      • 1970-01-01
      • 2015-09-17
      相关资源
      最近更新 更多