09-01 安卓:語音用戶引導(播放assets中的音頻資源)

因為項目的需求,需要做出來一個語音的用戶引導功能。就是當到某一個頁面的時候,自動播放語音,告訴用戶當前頁面有哪些功能,應該怎么使用。恩,說實話,感覺這個功能稍微有點兒雞肋。但是想著也不難實現,于是今天便著手做了起來。

概述

大概思路很簡單了,設置里面設置一個語音的開關。然后采用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();  
    }  
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,269評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,229評論 4 61
  • 圖片發自簡書App 距離上次寫文章的時間已經很模糊了,不知道是心慵懶了,亦或是隨著年齡的增長,慢慢學會了隱藏…...
    倪雪閱讀 212評論 0 0
  • 護膚保養是我們每天的必修課,每個愛美的女生都有自己護膚步驟和習慣。但是如果你一錯再錯深陷護膚誤區,不僅無法養成好膚...
    斯嘉閱讀 436評論 1 1