Android中怎样调用自带的Base64实现文件与字符串的编码和解码
场景
需要将某音频文件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实现文件与字符串的编码和解码相关推荐
- 关于openGL, openGL ES, openVG及android中2D调用关系的报告
关于openGL, openGL ES, openVG及android中2D调用关系的报告 http://blog.chinaunix.net/u3/99423/showart_2203591.htm ...
- html中引入调用另一个公用html模板文件的方法
html中引入调用另一个公用html模板文件的方法 https://www.w3h5.com/post/53.html 这里我使用jquery的方法 <body><divid=&qu ...
- 二十六、python中字符串的编码与解码,utf-8编码与解码,gbk编码与解码
在python中,我们经常会使用到字符串的编码与解码,推荐你在写代码的过程中都用utf-8编码解码 1.utf-8编码用函数encode,例子,编码英文跟数字的时候,他只是在前面多了个b,编码中文的时 ...
- Android中如何使用代码打开各种类型的文件
介绍 本篇用于介绍Android中如何打开各种类型的文件,如:音乐文件(mp3.wav.ogg等).视频文件(3gp.mp4等).图片文件(jpg.png.gif等).安装包(apk).文档(txt. ...
- 手机如何打开c语言文件类型,Android中如何使用代码打开各种类型的文件
介绍 本篇用于介绍Android中如何打开各种类型的文件,如:音乐文件(mp3.wav.ogg等).视频文件(3gp.mp4等).图片文件(jpg.png.gif等).安装包(apk).文档(txt. ...
- android wifi互传文件在哪里,如何在android中找到通过wifi直接模式传输的文件的文件名?...
嗨我的最终目标是在两台设备之间使用 android直接api在 android中传输文件.一旦设备充当客户端,另一个充当服务器,就像在wifi直接sdk演示中一样.为此,使用服务器端口和主机地址从客户 ...
- 用js实现基于Base64的数据或者图片的编码与解码
背景: 公司需要对接第三方的合作商,需要跳转至对方的网站,使用get请求访问对方链接直接跳转,get请求会直接暴露登陆的用户名和密码,我们采用base64编码,对用户信息进行保护. 常用的base64 ...
- Java之Base64实现文件和字符串之间的转换
摘要:Java通过Base64加密解密实现文件和字符串之间的转换! Base64.java package com.qdexam.util;import java.io.FileInputStream ...
- android中uvc调用usb摄像头,一篇文章带你了解Android Usb摄像头
在实际项目中,有些客户可能需要支持usb摄像头功能,如果你也遇到usb摄像头支持的问题,那这篇文章一定能帮助到你. 目前android是支持uvc协议的,也就是只要我们采用的usb摄像头是支持uvc协 ...
最新文章
- linux c 信号量简介
- python编写ftp客户端_用Python写FTP客户端程序
- LCD RGB 控制技术讲解 — 时钟篇(上)
- 设计模式-行为型模式-中介者模式
- cocos2d-x游戏实例(16)-纵版射击游戏(3)
- 信息技术上册教案了解计算机,信息技术上册全册教案
- ARM 中断状态和SVC状态的堆栈切换 (异常)【转】
- arcgis下载并部署/替换底图服务/IIS跨域--参考资料链接
- 2003 445端口关闭方式
- windows 计算机 快捷键,Windows7计算器快捷键汇总
- ARM 电源管理 4种模式
- Office Word 2010 2013 插入复选框 方框打勾 对号
- 米勒-拉宾素数检测法(判断一个极大的数是否为质数)——算法解析
- 一些基本 的数学知识
- VMware+Ubuntu安装使用说明
- 腾讯云重置系统后,xshell登录不上
- 网络中的计算机如果加入家庭组,win7如何加入家庭组
- 工作java工作总结
- Anaconda3 jupyter 警告:FutureWarning: reshape is deprecated and will raise in a subsequent release.
- C#Winform中DataGridView控件根据鼠标左右键获取单元格值或者行列
热门文章
- Divan and Kostomuksha (H version) dp,gcd(2300)
- php注册树模式,php基础设计模式大全(注册树模式、工厂模式、单列模式)
- vb调用matlab工具箱,Matlab与VB集成 - 关于VB的经验之谈 - VB爱好者乐园(VBGood) - 关于VB的经验,电子教程,代码,控件,论坛,博客,微博等....
- python里format有什么用_python的format什么意思
- html请求接口_前端工程师吐后端工程师(第八讲)——接口的开发
- html中传递sessionid,sessionID是怎么在客户端和服务器端传递的?
- centos中bash占用cpu_Docker 多种维度限制容器可用的 CPU
- php怎么输出以前的时间,php输出指定时间以前时间格式的方法_PHP
- python 队列 锁_python-day31(同步锁,队列)
- python 如果没有该key值置为空_在python字典中用“None”替换空值