zoukankan      html  css  js  c++  java
  • Android中怎样使用createTempFile实现将字节数据创建到临时文件并转换成FileOutputStream和FileInputStream

    场景

    在接收到音频文件的字节数组之后,需要将其临时存储在手机的某个路径下并将其转换为

    FileOutpurStream和FileInputStream提供给MediaPlayer进行播放。

    如果指定音频文件的存储路径时就会设计到权限问题、路径问题的设置等。

    可以将其存储在临时文件目录下,只供临时播放用,不进行永久存储。

    注:

    博客:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    代码如下

            try {
                byte[] mp3SoundByteArray = Base64.decode(content, Base64.DEFAULT);// 将字符串转换为byte数组
                // create temp file that will hold byte array
                File tempMp3 = File.createTempFile("badao", ".mp3");
                tempMp3.deleteOnExit();
                FileOutputStream fos = new FileOutputStream(tempMp3);
                fos.write(mp3SoundByteArray);
                fos.close();
    
                // Tried reusing instance of media player
                // but that resulted in system crashes...
                MediaPlayer mediaPlayer = new MediaPlayer();
    
                // Tried passing path directly, but kept getting
                // "Prepare failed.: status=0x1"
                // so using file descriptor instead
                FileInputStream fis = new FileInputStream(tempMp3);
                mediaPlayer.setDataSource(fis.getFD());
    
                mediaPlayer.prepare();
                mediaPlayer.start();
            } catch (IOException ex) {
                String s = ex.toString();
                ex.printStackTrace();
            }

    其中相关引入

    import android.media.MediaPlayer;
    import android.os.Environment;
    import android.util.Base64;
    
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;

    可以看到调用File.createTempFile将其转换为临时文件后

    然后将其转换为FileOutputStream后

    然后将其转换为FileInputStream后

    博客园: https://www.cnblogs.com/badaoliumangqizhi/ 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。
  • 相关阅读:
    Git 上传本地项目
    virtual和override
    ASP .NET依赖注入理解
    dotnet不是内部或外部的命令,也不是可运行的程序或批处理文件
    C++ 简单选择排序
    C++ 排序
    iOS UIDynamic
    iOS Modal
    C++ 折半查找
    C++ 二叉链表
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/14028386.html
Copyright © 2011-2022 走看看