zoukankan      html  css  js  c++  java
  • 【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将文本转换为语音的基本用法" }
        }
    });
  • 相关阅读:
    全国大学生信息安全竞赛—创新实践能力赛 华东北赛区部分wp
    全国大学生信息安全竞赛—创新实践能力赛初赛部分wp
    XMan冬令营 哈尔滨 day3 移动恶意应用分析
    XMan冬令营 哈尔滨 day2 安卓应用程序逆向分析
    XMan冬令营 哈尔滨 day1 移动应用程序渗透测试
    Linux大作业
    c++ 手写计算器
    KMP字符匹配算法
    二叉树遍历的几种实现
    Jmeter之CSS选择器/JQuery选择器关联
  • 原文地址:https://www.cnblogs.com/rainmj/p/5265176.html
Copyright © 2011-2022 走看看