场景

需要将某音频文件mp3格式编码成字符串并能再将其转换为字符串。

注:

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

实现

首先新建一个工具类File2StringUtils并在工具类中新建方法实现将文件编码为字符串

    public static String fileToBase64(InputStream inputStream) {String base64 = null;try {byte[] bytes = new byte[inputStream.available()];int length = inputStream.read(bytes);base64 = Base64.encodeToString(bytes, 0, length, Base64.DEFAULT);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (inputStream != null) {inputStream.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return base64;}

然后在res下新建raw目录,在此目录下存放一个mp3的音频文件。

然后在需要将文件编码为字符串的地方

InputStream is = getResources().openRawResource(R.raw.b32);
msg = File2StringUtils.fileToBase64(is);

然后就可以将此mp3编码成Base64格式的字符串

然后在工具类中再新建一个解码的方法 ,通过

byte[] mp3SoundByteArray = Base64.decode(content, Base64.DEFAULT);// 将字符串转换为byte数组

剩下的就可以根据自己的需求将字节数据进行相应的操作,比如这里是将其存储到临时文件中

并进行播放

    public static void playMp3(String content) {try {byte[] mp3SoundByteArray = Base64.decode(content, Base64.DEFAULT);// 将字符串转换为byte数组// create temp file that will hold byte arrayFile 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 insteadFileInputStream fis = new FileInputStream(tempMp3);mediaPlayer.setDataSource(fis.getFD());mediaPlayer.prepare();mediaPlayer.start();} catch (IOException ex) {String s = ex.toString();ex.printStackTrace();}}

然后在需要将此字符串编码解码为语音文件的地方

File2StringUtils.playMp3(dataContent);

然后就可以将上面编码的字符串文件解编码为语音文件并播放。

Android中怎样调用自带的Base64实现文件与字符串的编码和解码相关推荐

  1. 关于openGL, openGL ES, openVG及android中2D调用关系的报告

    关于openGL, openGL ES, openVG及android中2D调用关系的报告 http://blog.chinaunix.net/u3/99423/showart_2203591.htm ...

  2. html中引入调用另一个公用html模板文件的方法

    html中引入调用另一个公用html模板文件的方法 https://www.w3h5.com/post/53.html 这里我使用jquery的方法 <body><divid=&qu ...

  3. 二十六、python中字符串的编码与解码,utf-8编码与解码,gbk编码与解码

    在python中,我们经常会使用到字符串的编码与解码,推荐你在写代码的过程中都用utf-8编码解码 1.utf-8编码用函数encode,例子,编码英文跟数字的时候,他只是在前面多了个b,编码中文的时 ...

  4. Android中如何使用代码打开各种类型的文件

    介绍 本篇用于介绍Android中如何打开各种类型的文件,如:音乐文件(mp3.wav.ogg等).视频文件(3gp.mp4等).图片文件(jpg.png.gif等).安装包(apk).文档(txt. ...

  5. 手机如何打开c语言文件类型,Android中如何使用代码打开各种类型的文件

    介绍 本篇用于介绍Android中如何打开各种类型的文件,如:音乐文件(mp3.wav.ogg等).视频文件(3gp.mp4等).图片文件(jpg.png.gif等).安装包(apk).文档(txt. ...

  6. android wifi互传文件在哪里,如何在android中找到通过wifi直接模式传输的文件的文件名?...

    嗨我的最终目标是在两台设备之间使用 android直接api在 android中传输文件.一旦设备充当客户端,另一个充当服务器,就像在wifi直接sdk演示中一样.为此,使用服务器端口和主机地址从客户 ...

  7. 用js实现基于Base64的数据或者图片的编码与解码

    背景: 公司需要对接第三方的合作商,需要跳转至对方的网站,使用get请求访问对方链接直接跳转,get请求会直接暴露登陆的用户名和密码,我们采用base64编码,对用户信息进行保护. 常用的base64 ...

  8. Java之Base64实现文件和字符串之间的转换

    摘要:Java通过Base64加密解密实现文件和字符串之间的转换! Base64.java package com.qdexam.util;import java.io.FileInputStream ...

  9. android中uvc调用usb摄像头,一篇文章带你了解Android Usb摄像头

    在实际项目中,有些客户可能需要支持usb摄像头功能,如果你也遇到usb摄像头支持的问题,那这篇文章一定能帮助到你. 目前android是支持uvc协议的,也就是只要我们采用的usb摄像头是支持uvc协 ...

最新文章

  1. linux c 信号量简介
  2. python编写ftp客户端_用Python写FTP客户端程序
  3. LCD RGB 控制技术讲解 — 时钟篇(上)
  4. 设计模式-行为型模式-中介者模式
  5. cocos2d-x游戏实例(16)-纵版射击游戏(3)
  6. 信息技术上册教案了解计算机,信息技术上册全册教案
  7. ARM 中断状态和SVC状态的堆栈切换 (异常)【转】
  8. arcgis下载并部署/替换底图服务/IIS跨域--参考资料链接
  9. 2003 445端口关闭方式
  10. windows 计算机 快捷键,Windows7计算器快捷键汇总
  11. ARM 电源管理 4种模式
  12. Office Word 2010 2013 插入复选框 方框打勾 对号
  13. 米勒-拉宾素数检测法(判断一个极大的数是否为质数)——算法解析
  14. 一些基本 的数学知识
  15. VMware+Ubuntu安装使用说明
  16. 腾讯云重置系统后,xshell登录不上
  17. 网络中的计算机如果加入家庭组,win7如何加入家庭组
  18. 工作java工作总结
  19. Anaconda3 jupyter 警告:FutureWarning: reshape is deprecated and will raise in a subsequent release.
  20. C#Winform中DataGridView控件根据鼠标左右键获取单元格值或者行列

热门文章

  1. Divan and Kostomuksha (H version) dp,gcd(2300)
  2. php注册树模式,php基础设计模式大全(注册树模式、工厂模式、单列模式)
  3. vb调用matlab工具箱,Matlab与VB集成 - 关于VB的经验之谈 - VB爱好者乐园(VBGood) - 关于VB的经验,电子教程,代码,控件,论坛,博客,微博等....
  4. python里format有什么用_python的format什么意思
  5. html请求接口_前端工程师吐后端工程师(第八讲)——接口的开发
  6. html中传递sessionid,sessionID是怎么在客户端和服务器端传递的?
  7. centos中bash占用cpu_Docker 多种维度限制容器可用的 CPU
  8. php怎么输出以前的时间,php输出指定时间以前时间格式的方法_PHP
  9. python 队列 锁_python-day31(同步锁,队列)
  10. python 如果没有该key值置为空_在python字典中用“None”替换空值