2

我有一个使用创建的文件

var recordIntent = new Intent(MediaStore.Audio.Media.RecordSoundAction);

检索此文件的 URI 没有问题。而且我可以毫无困难地使用 MediaPlayer 播放它。

但是,我想将此作为对我的 webAPI 的响应发送,并且正在寻找一种方法来将此 URI 表示的音频文件转换为可以转换为 JSON 的字节数组。

使用图像文件,我可以做类似的事情

Bitmap bitmap = MediaStore.Images.Media.GetBitmap(ContentResolver, responseUri);
bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
byte[] bitmapData = stream.ToArray();

有没有类似的方法可以从我的音频 URI 中检索字节数组数据?

编辑:音频 URI 的格式。
responseUri = {content://media/external/audio/media/21}

4

1 回答 1

2

从大量不同的 SO 答案中获取,以及从 Java 对单声道进行一些额外的转换,我得出了这些结果。

    public String GetRealPathFromUri(Uri contentUri){
        String[] proj = {MediaStore.Audio.AudioColumns.Data};
        ICursor cursor = ManagedQuery(contentUri, proj, null, null, null);
        int column_index = cursor.GetColumnIndex(MediaStore.Audio.AudioColumns.Data);
        cursor.MoveToFirst();
        return cursor.GetString(column_index);
    }

var responseRealPath = GetRealPathFromUri(responseUri);
var getBytes = System.IO.File.ReadAllBytes(responseRealPath);
var responseBase = Convert.ToBase64String(getBytes);
于 2012-09-20T14:46:42.967 回答