文字+音频交互设计与技术实现

       文字与音频的组合交互无论是PC端还是移动端都是一个传统的、经典的交互方式,唤醒的是人的视觉与听觉能力与感受。应用场景也特别多,比如有声小说,歌曲与歌词等。而自己为解决个人生活中的一个问题而开发的这个简单的APP ,也算是文字与音频的典型应用场景。

       一直以来对自己的普通话不标准而感到烦恼,最近终于下定决心要好好的练习普通话,于是找来了很多文章和配套音频,但文章和音频是分开的,练习的时候的先打开文章,然后再通过音频播放器播放配套音频。即使在音乐播放器中播放音频,但因为文章也不是歌词形式,也做不到我想要的同步。于是自己开发了一个简单的APP,以满足自己打开APP后边看文章,边听文章朗读音频。至于测试自己普通话是否有进步等需求,可能还需要开发录音与比对等功能,那就是后话了。

交互效果:

 

技术实现:

       实现这个效果大致可分成两块,一是文章的显示,二是配套音频的播放控制。为此需要先准备好文章文件和音频文件。需要注意的是我的文章是通过*.txt文本文件存放且存放的编码格式是utf-8(另存为中可以选择对应的编码格式),不注意这个问题可能获取到的文章在项目中会出现乱码问题。音频文件一定要是Android系统支持的格式,比如*.mp3、*.m4a等。


1、文章显示


(1)文章的存放与内容获取问题

       文章可存放到项目中的assets资产目录中,也可以作为资源存放到res/raw目录下,不同的存放方式使得获取文章数据的方式有些不同。具体介绍如下:

    a)存放到assets目录:

        AssetManager am = getAssets();//获取资产管理器类

        InputStream is = am.open("circle.txt");//打开指定文章名的输入流,其中circle.txt是文章名,需要带后缀名。

    b)存放到res/raw目录:

      //获取资源管理器,然后打开指定资源id的输入流,其中R.raw.circle是文章的资源id。

      InputStream is =getResources().openRawResource(R.raw.circle);

     说明:这两种方式各有优缺点而一但获取到对应的输入流,之后的操作就是JavaIO处理了。

(2)文章数据的显示

       文章数据的显示可以使用TextView控件,但TextView要显示的数据需要是字符串的,所以需要把输入流转化成字符串才好再通过TextView的setText()方法显示到TextView控件上。并且由于文章的显示可能超过一屏,默认情况下一屏之后的内容会看不到,所以最好使用ScrollView包裹一下TextView,使其具有滑动功能,以方便用户查看一屏之后的内容,具体布局与逻辑实现代码如下:

       a)布局实现部分:

      <ScrollView

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:layout_below="@id/rl_title"

        android:scrollbars="none">

        <TextView

            android:id="@+id/tv_circle"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_marginLeft="5dp"

            android:layout_marginRight="5dp"

           

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值