【Android】20.0 第20章 音频、视频、拍照、语音合成
分类:C#、Android、VS2015;
创建日期:2016-03-11
一、简介
Android提供了常见的多媒体文件编码、解码机制,你可以直接调用Android提供的API,实现相册、播放器、录音、摄像等功能。换言之,你可以通过Activity和Intent,直接访问各种多媒体文件或流数据(本地媒体文件、外部存储文件、资源文件、URL指定的音频视频网络流)。
本章要点:
- 音频和视频播放:MediaPlayer类。
- 播放视频播放:MediaPlayer类、MediaController类和VideoView控件。
- 录制音频和视频:MediaRecorder类。
这一章主要介绍音频、视频、拍照、语音合成(中英文朗读)等相关的基础知识。
二、Resources/raw文件夹与Assets文件夹的区别
由于这一章播放的文件都保存在这两个文件夹下,所以先把这两者之间的区别说一下。
1、相同点
这两个文件夹下的文件打包后都会以独立文件的形式保存在apk安装包中,原来的文件是什么格式还是什么格式,都不会被编译到可执行的二进制文件中。
2、不同点
(1)Resources/raw文件夹下不能再包含子文件夹,而Assets文件夹下还可以再继续创建子文件夹。
(2)Resources/raw文件夹下的文件会被映射到Resource.Designer.cs文件中,因此项目中可直接使用文件的资源ID访问它(即Resource.Id.不带扩展名的文件名),该文件夹的作用相当于WPF项目中“链接的资源”文件类型;Assets文件夹下的文件则不会被映射到Resource.Designer.cs文件中,只能通过AssetManager类来访问它,该文件夹的作用相当于WPF项目中的“内容”文件类型。
3、读取数据流
假如保存到这两个文件夹下的文件名都是abc.mp3,则
读取Resources/raw下文件流的方式如下(资源id就是不带扩展名的文件名):
System.IO.Stream stream = Resources.OpenRawResource(Resource.Id.abc);
读取Assets下的文件流的方式如下(用带路径和扩展名的文件名指定,如果没有子文件夹,可直接写文件名):
System.IO.Stream stream = Resources.Assets.Open("abc.mp3");
4、用VideoView播放视频
假如保存到这两个文件夹下的文件名都是abc.mp4,而且用最常用的VideoView来播放该视频,下面的办法演示了如何指定要播放的文件。
播放Resources/raw下的该文件:
VideoView.SetVideoUri(Uri.Parse("android.resource://" + PackageName + "/" + Resorce.Raw.abc));
三、本章示例主界面
1、运行截图
2、ch.cs文件中与本章示例相关的代码
chItems.Add(new Chapter()
{
ChapterName = "第20章 音频、视频、拍照、截图",
ChapterItems = new ChItem[]
{
new ChItem { type=typeof(ch2001MainActivity), Title="例20-1 音频播放基本用法", Desc = "演示音频播放的基本用法" },
new ChItem { type=typeof(ch2002MainActivity), Title="例20-2 视频播放基本用法", Desc = "演示视频播放的基本用法" },
new ChItem { type=typeof(ch2003MainActivity), Title="例20-3 拍照和视频录制基本用法", Desc = "演示相机拍照和视频录制的基本用法" },
new ChItem { type=typeof(ch2004MainActivity), Title="例20-4 录音基本用法", Desc = "演示录制音频的基本用法" },
new ChItem { type=typeof(ch2005MainActivity), Title="例20-5 百度tts基本用法", Desc = "演示利用百度tts将文本转换为语音的基本用法" }
}
});
【Android】20.0 第20章 音频、视频、拍照、语音合成的更多相关文章
- 【转】android如何浏览并选择图片 音频 视频
转自:http://www.cnblogs.com/top5/archive/2012/03/06/2381986.html 这几天 在学习并开发android系统的图片浏览 音频 视频 的浏览 ...
- linux(centos8):prometheus使用alertmanager发送报警邮件(prometheus 2.18.1/alertmanager 0.20.0)
一,alertmanager的用途 1,Alertmanager的作用: Alertmanager是一个独立的报警模块, 它接收Prometheus等客户端发来的警报,并通过分组.删除重复等处理, 通 ...
- Skipping 'Android SDK Tools, revision 24.0.2'; it depends on 'Android SDK Platform-tools, revision 20' which was not installed.
前几天,同事问我eclipse android sdk怎么不能更新. 更新界面是显示(mirrors.neusoft.edu.cn:80),但是不能更新. 问题描述如下: URL not found: ...
- This Android SDK requires Android Developer Toolkit version 20.0.0 or above
本人最近在操作更新ANDROID SDK时出现类似于题目中的错误,是一启动ECLIPSE时.但是,我现在只是想恢复到原先的开发环境.于是找到本文,方法有效!!! windows 下面安装Android ...
- 【转】This Android SDK requires Android Developer Toolkit version 20.0.0 or above
本人最近在操作更新ANDROID SDK时出现类似于题目中的错误,是一启动ECLIPSE时.但是,我现在只是想恢复到原先的开发环境.于是找到本文,方法有效!!! windows 下面安装Android ...
- Windows Phone 8初学者开发—第20部分:录制Wav音频文件
原文 Windows Phone 8初学者开发—第20部分:录制Wav音频文件 原文地址:http://channel9.msdn.com/Series/Windows-Phone-8-Develop ...
- hadoop2.20.0集群安装教程
一.安装的需要软件及集群描述 1.软件: Vmware9.0:虚拟机 Hadoop2.2.0:Apache官网原版稳定版本 JDK1.7.0_07:Oracle官网版本 Ubuntu12.04LTS: ...
- 【3D动画建模设计工具】Maxon Cinema 4D Studio for Mac 20.0
图标 Icon 软件介绍 Description Maxon Cinema 4D Studio R20 ,是由德国公司Maxon Computer一款适用于macOS系统的3D动画建模设计工具,是 ...
- 调用类java.lang.Math的成员方法"public static double random"运算下面表达式10000次,统计其中生成的整数0,1,2,.....20的个数分别是多少,并输出统计结果.(int)(Math.random()*20+0.5)
public class Test2 { public static void main(String args[]){ int num; int count[]=new int[21]; for(i ...
随机推荐
- eclipse在search的时候,通过search打开的页面会覆盖之前打开的页面
eclipse在search的时候,通过search打开的页面会覆盖之前打开的页面,如果不想覆盖的话,可以这么设置: Window->Preferences->General->Se ...
- Android 四大组件之 Service(二)
这里主要介绍Service组件的使用. 1.定义一个继承Service的子类 如下: package com.service; import android.app.Service; import a ...
- SqlServer日常积累(二)
1.Like运算符:将字符串表达式与 SQL表达式中的模式进行比较匹配. 语法 :expression Like 'pattern' ,expression为匹配字段,pattern为匹配字符串.可以 ...
- 解压版MySQL安装后初始化root密码
1: C:\Users\gechong>mysql
- 几款Android开发人员必备小工具
在这里我介绍一下我常常在Android Studio里面使用的小工具吧,这些工具都能够在plugin里面搜索到. (当然了哈.我也是从网上找的.用着挺方便的,在这里总结一下) Gsonformat: ...
- spring task:annotation-driven 定时任务
1.配置文件加上<task:annotation-driven/> 2.要运行的方法前加上 @Scheduled(cron="0 00 12 1 * ?") //每月 ...
- 如何在 CentOS 7 中安装、配置和安全加固 FTP 服务
步骤 1:安装 FTP 服务器 1. 安装 vsftpd 服务器很直接,只要在终端运行下面的命令. # yum install vsftpd 2. 安装完成后,服务先是被禁用的,因此我们需要手动启动, ...
- Drupal administration theme
Drupal允许为管理后台设置独立的theme,保存在系统变量variable_get('admin_theme'). Drupal使用全局变量$theme来保存当前请求对应的主题.Drupal在启动 ...
- jquery中的replaceWith()和html()的区别
区别在于,html()会替换指定元素内部的HTML,而replaceWith()会替换元素本身及其内部的HTML. //目标div <div id="myid" /> ...
- NYOJ----次方求模
次方求模 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一 ...