美文网首页
09-01 安卓:语音用户引导(播放assets中的音频资源)

09-01 安卓:语音用户引导(播放assets中的音频资源)

作者: 心灵屋宿客 | 来源:发表于2017-09-01 21:38 被阅读0次

因为项目的需求,需要做出来一个语音的用户引导功能。就是当到某一个页面的时候,自动播放语音,告诉用户当前页面有哪些功能,应该怎么使用。恩,说实话,感觉这个功能稍微有点儿鸡肋。但是想着也不难实现,于是今天便着手做了起来。

概述

大概思路很简单了,设置里面设置一个语音的开关。然后采用sharepreference存储起来。然后每个页面根据存储值决定是否播放特定音乐资源。

开始

整体功能的实现其实很简单。因为要根据路径找文件,所以有可能出现IO异常。所以最好try,catch包裹起来。主要代码如下:

播放

private void play(String filename) {
        this.filename=filename;
        try {
            AssetManager assetManager = this.getAssets();   ////获得该应用的AssetManager
            AssetFileDescriptor afd = assetManager.openFd(filename);   //根据文件名找到文件
            //对mediaPlayer进行实例化
            mediaPlayer = new MediaPlayer();
            if (mediaPlayer.isPlaying()) {
                mediaPlayer.reset();    //如果正在播放,则重置为初始状态
            }
            mediaPlayer.setDataSource(afd.getFileDescriptor(),
                    afd.getStartOffset(), afd.getLength());     //设置资源目录
            mediaPlayer.prepare();//缓冲
            mediaPlayer.start();//开始或恢复播放
        } catch (IOException e) {
            LogUtils.e("没有找到这个文件");
            e.printStackTrace();
        }
    }

其他情况处理

    //如果失去焦点,停止播放
    @Override
    protected void onPause()
    {
        if(mediaPlayer.isPlaying())
        {
            //保存当前播放点
            position = mediaPlayer.getCurrentPosition();
            mediaPlayer.stop();
        }
        super.onPause();
    }

    //如果重新获得焦点,继续播放音乐
    @Override
    protected void onResume()
    {
        if(position>0 && filename!=null)
        {
            try
            {
                play(filename);
                mediaPlayer.seekTo(position);
                position = 0;
            }
            catch (Exception e)
            {
                LogUtils.e(e.toString());
            }
        }
        super.onResume();
    } 
    //退出时,对mediaPlayer进行回收 
    @Override  
    protected void onDestroy()   
    {  
        mediaPlayer.release();       
        super.onDestroy();  
    }  

相关文章

网友评论

      本文标题:09-01 安卓:语音用户引导(播放assets中的音频资源)

      本文链接:https://www.haomeiwen.com/subject/duakjxtx.html