Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Base64音频文件编码和解码_Android_Base64_Android Mediaplayer - Fatal编程技术网

Android Base64音频文件编码和解码

Android Base64音频文件编码和解码,android,base64,android-mediaplayer,Android,Base64,Android Mediaplayer,我正在做什么:我正在录制语音并将其保存为SD卡中的文件,SD卡在MediaPlayer中运行/播放良好 我想要什么:当我将此文件编码为Base64并发送到服务器时,一切正常。但当我将Base64字符串解码为audio.m4a文件时,它并没有在MediaPlayer中运行 我试过.m4a,.wav,但都没有成功。 问题在于编码。因为当我解码来自同一iOS应用程序的文件时,它在MediaPlayer中运行良好 我知道这是非常基本的,有很多帮助是编码解码,但没有任何工作。我的做法如下: privat

我正在做什么:我正在录制语音并将其保存为SD卡中的文件,SD卡在MediaPlayer中运行/播放良好

我想要什么:当我将此文件编码为Base64并发送到服务器时,一切正常。但当我将Base64字符串解码为audio.m4a文件时,它并没有在MediaPlayer中运行

我试过.m4a.wav,但都没有成功。
问题在于编码。因为当我解码来自同一iOS应用程序的文件时,它在MediaPlayer中运行良好

我知道这是非常基本的,有很多帮助是编码解码,但没有任何工作。我的做法如下:

 private void encodeAudio(String selectedPath) {

    byte[] audioBytes;
    try {

        // Just to check file size.. Its is correct i-e; Not Zero
        File audioFile = new File(selectedPath);
        long fileSize = audioFile.length();

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        FileInputStream fis = new FileInputStream(new File(selectedPath));
        byte[] buf = new byte[1024];
        int n;
        while (-1 != (n = fis.read(buf)))
            baos.write(buf, 0, n);
        audioBytes = baos.toByteArray();

        // Here goes the Base64 string
        _audioBase64 = Base64.encodeToString(audioBytes, Base64.DEFAULT);

    } catch (Exception e) {
        DiagnosticHelper.writeException(e);
    }

}  
并按以下方式解码:

private void decodeAudio(String base64AudioData, File fileName, String path, MediaPlayer mp) {

    try {

        FileOutputStream fos = new FileOutputStream(fileName);
        fos.write(Base64.decode(base64AudioData.getBytes(), Base64.DEFAULT));
        fos.close();

        try {

            mp = new MediaPlayer();
            mp.setDataSource(path);
            mp.prepare();
            mp.start();

        } catch (Exception e) {

            DiagnosticHelper.writeException(e);

        }

    } catch (Exception e) {
        e.printStackTrace();
    }


}  

如果我做了什么错事/傻事,请指出

尝试使用Multipartentity将任何类型的文件上载到服务器

公共void postFile(字符串文件\路径,字符串url){ 文件=新文件(文件路径)


按照下面链接@Sumit中的规定使用。我以前见过这个。没有用。我需要转换成Base64编码的字符串。这是一个要求。请尝试一下,看看我的代码。我在做什么不同的事情吗?来吧…我在做同样的事情!!
    try {
        System.out.println(file_path);
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(url);


        FileBody bin = new FileBody(file);
        MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
        reqEntity.addPart("file", bin); /*I believe that the "file" is the name in php part*/
        post.setEntity(reqEntity);
        HttpResponse response = client.execute(post);
        HttpEntity resEntity = response.getEntity();
        if (resEntity != null) {
            Log.i("RESPONSE", EntityUtils.toString(resEntity));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}