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 から mono への少し余分な変換を行って、これらの結果を思いつきました。

    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 に答える