1

データをサーバーに送信するためにオーディオ mp3 ファイルを文字列データに変換することは可能ですか。サーバーは文字列データをアプリに返します。そのデータを mp3 ファイルに変換してオーディオを再生したいと考えています。

このコードを使用してmp3ファイルを文字列データに変換しています

public static String readFileAsString(String filePath) throws java.io.IOException {

    BufferedReader reader = new BufferedReader(new FileReader(filePath));
    String line, results = "";
    while( ( line = reader.readLine() ) != null)
    {
        results += line;
    }
    reader.close();
    return results;

}

変換されたストリンド データから mp3 ファイルを取得する方法がわかりません。

可能であれば、どのように?誰か助けて。

または、この要件に対する他の解決策を教えてください: オーディオ ファイルとビデオ ファイルをサーバーに渡し、サーバーから戻ってアプリで使用したい。

4

2 に答える 2

5

Base64.encodeToString() を使用してくださいhttp://developer.android.com/reference/android/util/Base64.html#encodeToString%28byte%5B%5D,%20int%29

File file = new File(Environment.getExternalStorageDirectory() + "/hello-4.wav");
byte[] bytes = FileUtils.readFileToByteArray(file);

String encoded = Base64.encodeToString(bytes, 0);                                       
Utilities.log("~~~~~~~~ Encoded: ", encoded);

byte[] decoded = Base64.decode(encoded, 0);
Utilities.log("~~~~~~~~ Decoded: ", Arrays.toString(decoded));

try
{
    File file2 = new File(Environment.getExternalStorageDirectory() + "/hello-5.wav");
    FileOutputStream os = new FileOutputStream(file2, true);
    os.write(decoded);
    os.close();
}
catch (Exception e)
{
    e.printStackTrace();
}



public class FileUtils {

    /**
     * Instances should NOT be constructed in standard programming.
     */
    public FileUtils() { }

    /**
     * The number of bytes in a kilobyte.
     */
    public static final long ONE_KB = 1024;

    /**
     * The number of bytes in a megabyte.
     */
    public static final long ONE_MB = ONE_KB * ONE_KB;

    /**
     * The number of bytes in a gigabyte.
     */
    public static final long ONE_GB = ONE_KB * ONE_MB;



    public static String readFileToString(
            File file, String encoding) throws IOException {
        InputStream in = new java.io.FileInputStream(file);
        try {
            return IOUtils.toString(in, encoding);
        } finally {
            IOUtils.closeQuietly(in);
        }
    }



    }

}
于 2012-12-11T11:23:42.943 に答える
0
Error:(49, 41) error: cannot find symbol method readFileToByteArray(File)

FileUtils でそのメソッドを定義していないと思いますか?

次のようにコードを変更して、この問題を解決しました。

//byte[] bytes = FileUtils.readFileToByteArray(file);
            byte[] bytes = new byte[(int)file.length()];
于 2016-01-22T18:11:07.053 に答える