• 【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、运行截图

    image

    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将文本转换为语音的基本用法" }
        }
    });
  • 相关阅读:
    compass 制作css sprites
    net模块
    javascript -- 代理模式
    javascript -- 单例模式
    js 对象的浅拷贝和深拷贝
    js 对象的封装,继承,多态的理解
    this,call,apply
    flex 实现圣杯布局
    ubuntu中安装mongodb
    devDependencies和dependencies的区别
  • 原文地址:https://www.cnblogs.com/rainmj/p/5265176.html
Copyright © 2020-2023  润新知