美文网首页
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