真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

10天學(xué)通Android開發(fā)(8)-多媒體

一、播放聲音SoundPool

成都創(chuàng)新互聯(lián)聯(lián)系熱線:028-86922220,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),成都創(chuàng)新互聯(lián)網(wǎng)頁制作領(lǐng)域十余年,包括玻璃貼膜等多個(gè)領(lǐng)域擁有豐富的網(wǎng)站推廣經(jīng)驗(yàn),選擇成都創(chuàng)新互聯(lián),為網(wǎng)站錦上添花。

SoundPool播放短的音效,不能播放歌曲

可以用soundpool,用soundpool可以播一些短的反應(yīng)速度要求高的聲音,
比如游戲中的爆破聲,而mediaplayer適合播放長點(diǎn)的。
SoundPool載入音樂文件使用了獨(dú)立的線程,不會阻塞UI主線程的操作, SoundPool類支持同時(shí)播放多個(gè)音效,這對于游戲來說是十分必要的,而MediaPlayer類是同步執(zhí)行的只能一個(gè)文件一個(gè)文件的播放。 

 

實(shí)例:

sp=new SoundPool(1,AudioManager.STREAM_MUSIC,0);

加載:      

soundId =sp.load(this, R.raw.note1, 1);

播放,可設(shè)置慢速、快速、頻率高低等

sp.play(soundId, 1, 1, 0, 0, 2.0f);

二、播放聲音MediaPlay

MediaPlayer可播放長的聲音,可后臺播放

創(chuàng)建:

mp= MediaPlayer.create(this,R.raw.song);

釋放:

mp.release();

相關(guān)資源準(zhǔn)備、該下載就下載

mp.prepare();

播放:

mp.start();

 

三、錄音MediaRecord

寫入外部存儲的權(quán)限:

"android.permission.WRITE_EXTERNAL_STORAGE"/>

錄音權(quán)限:

"android.permission.RECORD_AUDIO"/>

 

創(chuàng)建目錄:

File dir=new File(Environment.getExternalStorageDirectory(),"sonunds");

            if(!dir.exists())

             {

                dir.mkdir();//創(chuàng)建目錄

             }

創(chuàng)建文件:

File soundFile=new File(dir,System.currentTimeMillis()+".amr");

            if(!soundFile.exists())

             {

               try//捕獲一個(gè)異常

                {

                soundFile.createNewFile();

                }

               catch(IOException e)

                {

                   e.printStackTrace();

                }

            

             }

 

指定輸出

mr=new MediaRecorder();

mr.setOutputFile(soundFile.getAbsolutePath());/

 

準(zhǔn)備并開始錄制:

mr.prepare();

mr.start();

停止錄制:

mr.stop();

 

案例分析:

  1. 界面,四個(gè)按鈕:

     

       android:id="@+id/btnPlaySound"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:text="PlaySound" />

 

   

       android:id="@+id/btnPlaySong"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="PlaySong" />

      

       android:id="@+id/btnRecordBegin"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:text="開始錄制" />

        

       android:id="@+id/btnRecordStop"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

        android:text="停止錄制" />

  1. 播放短的音效

     

sp=new SoundPool(1,AudioManager.STREAM_MUSIC,0);

       

        soundId =sp.load(this, R.raw.note1, 1);

 

     

      findViewById(R.id.btnPlaySound).setOnClickListener(new View.OnClickListener() {

         

         @Override

         publicvoid onClick(View v) {           

            sp.play(soundId, 1, 1, 0, 0,2.0f);

          }

    });

 

  1. 播放歌曲

 

findViewById(R.id.btnPlaySong).setOnClickListener(newView.OnClickListener() {

         

         @Override

         publicvoid onClick(View v) {

            if (mp!=null) {

               mp.start();

             }

          }

      });

 

4)錄音

 

findViewById(R.id.btnRecordBegin).setOnClickListener(new View.OnClickListener() {

     

     @Override

     publicvoid onClick(View v) {

           startRecord();

      }

 

     privatevoid startRecord() {

         if(mr==null)

          {

             File dir=new File(Environment.getExternalStorageDirectory(),"sonunds");

            if(!dir.exists())

             {

                dir.mkdir();//創(chuàng)建目錄

             }

             File soundFile=new File(dir,System.currentTimeMillis()+".amr");

            if(!soundFile.exists())

             {

               try//捕獲一個(gè)異常

                {

                soundFile.createNewFile();

                }

               catch(IOException e)

                {

                   e.printStackTrace();

                }

            

             }

            mr=new MediaRecorder();

            

            mr.setAudioSource(MediaRecorder.AudioSource.MIC);//指定輸入源

            mr.setOutputFormat(MediaRecorder.AudioEncoder.AMR_WB);//輸出編碼格式

            mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);//輸入編碼格式

            

            

            

            mr.setOutputFile(soundFile.getAbsolutePath());//指定輸出

            

            try {

               mr.prepare();

               mr.start();

             }catch (IllegalStateException e) {

               //TODO Auto-generatedcatch block

                e.printStackTrace();

             }catch (IOException e) {

               //TODO Auto-generatedcatch block

                e.printStackTrace();

             }

            

         

          }

         

      }

   });

 

5)停止錄音

 

findViewById(R.id.btnRecordStop).setOnClickListener(new View.OnClickListener() {

     

     @Override

     publicvoid onClick(View v) {

           stopRecord();

      }

 

     privatevoid stopRecord() {

         if(mr!=null)

          {

            mr.stop();

            mr.release();

            mr=null;

          }

      }

   });

  

6)權(quán)限設(shè)置

 

   "android.permission.WRITE_EXTERNAL_STORAGE"/>

   "android.permission.RECORD_AUDIO" />


×××:


文章標(biāo)題:10天學(xué)通Android開發(fā)(8)-多媒體
網(wǎng)頁地址:http://weahome.cn/article/jecgoe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部