導航:首頁 > 編程語言 > screenrecandroid代碼

screenrecandroid代碼

發布時間:2023-01-16 16:38:09

『壹』 Android 開發 如何實現高質量的錄音

如果你有一台Android設備,就會注意到當你按下增大或降低音量按鈕時,你所控制的不同音量設置取決於你正在運行的應用程序。在通話中,你控制的是輸入語音流的音量;在視頻播放器中,你控制的是視頻音頻的音量;在主屏幕上,你控制的是鈴聲的音量。Android為不同的目的提供不同音頻流。當我們在游戲中播放音頻時,可使用類來輸出音效和音樂到特定的音樂流。
不過,在我們想播放音效或音樂之前,需要確定音量按鈕控制了正確的音頻流。為此,我們使用Context介面的另一個方法:context.setVolumeControlStream(AudioManager.STREAM_MUSIC);一如既往,Context的實現仍然由我們的活動來負責。調用該方法之後,音量按鈕就控制了該音樂流,後面我們就可使用它來輸出我們的音效和音樂。在活動的生命周期內我們只需要調用該方法一次,最好是在Activity.onCreate()方法中調用它。首先我們要分清音樂流和音效的不同。後者一般是存儲在內存中且其長度不會超過幾秒鍾。Android系統給我們提供了一個SoundPool類,使用它可以很容易實現音效播放。我們可以很簡單地初始化一個新的SoundPool實例,如下所示:SoundPool soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0);第一個參數指定在同一時刻我們最多能播放多少個音效。這並不是說我們不能載入更多的音效文件,它只不過是限制可同時播放的音效個數。第二個參數指定了SoundPool使用什麼音頻流來輸出該音頻。我們在這里選擇音樂流,同時也已經為它設置好音量控制項。最後一個參數現在沒有使用,它應該為默認值0.為了從一個音頻文件載入音效到堆內存中,我們可使用SoundPool.load()方法。所有的文件都存儲在assets/目錄下,因此我們需要重載SoundPool.load()方法。所有的文件都存儲在assets/目錄下,因此我們需要重載SoundPool.load()方法來獲得一個AssetFileDescriptor。我們怎麼獲得AssetFileDescriptor呢?使用AssetManager。這里我們使用SoundPool從assets/目錄載入一個名為explosion.ogg的OGG文件:AssetFileDescriptor descriptor = assetManager.openFd("explosion.ogg");int explosionId = soundPool.load(descriptor, 1);通過AssetManager.openFd()方法可直接獲得AssetFileDescriptor,而通過SoundPool可很容易地載入音效,第二個參數用於指定該音效的優先順序。這個參數目前未使用,為了以後的兼容應設置為1.SoundPool.load()方法將返回一個整型值,它將作為一個句柄用於載入的音效。當我們想播放音效時,只需要指定該句柄,SoundPool就知道該播放哪個音頻。soundPool.play(explosionId, 1.0f, 1.0f, 0, 0, 1);第一個參數是從SoundPool.load()方法接受句柄。接下來兩個參數分別用於指定左右通道的音量,其值應該從0(靜音)到1(最大)接下來兩個參數我們很少使用,其中第一個參數是優先順序,目前沒有使用,並且應該設置為0.而另一個參數用於指定音效循環播放的頻率,一般不建議循環播放音效,因此設置為0。最後一個參數是播放速率,將其設置為大於1時,音效播放的速度將會比其在錄制時快;而將它設置為小於1時,播放該音效就會比較慢。當我們不再需要一個音效並希望釋放內存時,可使用SoundPool.unload()方法:soundPool.unload(explosionId);我們只需要將從SoundPool.load()方法接收的音效句柄傳入即可,該方法會將音效從內存卸載。當我們完成所有的音效輸出且不再需要SoundPool時,需要調用SoundPool.release()方法來釋放SoundPool所佔用的所有資源。當然,在釋放之後,我們不能再使用SoundPool,而且SoundPool所載入的所有音效也會被釋放。現在編寫一個簡單的測試活動,每當單擊屏幕時它就播放一個爆炸音效。代碼如下:[java] view plainpackage org.example.ch04_android_basics; import java.io.IOException; import android.app.Activity; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.media.AudioManager; import android.media.SoundPool; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.TextView; public class SoundPoolTest extends Activity implements OnTouchListener{ SoundPool soundPool; int explosionId = -1; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); TextView textView = new TextView(this); textView.setOnTouchListener(this); setContentView(textView); setVolumeControlStream(AudioManager.STREAM_MUSIC); soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0); try{ AssetManager assetManager = getAssets(); AssetFileDescriptor descriptor = assetManager .openFd("explosion.ogg"); explosionId = soundPool.load(descriptor, 1); }catch(IOException e){ textView.setText("Couldn't load sound effect from asset, " + e.getMessage()); } } @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub if(event.getAction() == MotionEvent.ACTION_UP){ if(explosionId != -1){ soundPool.play(explosionId, 1, 1, 0, 0, 1); } } return true; } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); soundPool.release(); }
}
SoundPool在處理MP3文件或長的音頻文件時會有問題,長文件的定義超過5或6秒鍾。一般建議使用OGG音頻文件來代替MP3文件,並盡可能使用低的采樣率和持續時間,同時保持音效質量。短小的音效很時候放在Android應用程序從操作系統分配到的堆內存中,而包含較長音樂文件的大音頻文件就很不適合了。為此,我們就需要將音樂以流的方式輸出到音頻硬體上,這就意味著每次我們只能讀入一小塊數據,該數據足於解碼成原生的PCM數據並輸出到音頻晶元上。這聽起來挺嚇人的。不過幸運的是,我們有MediaPlayer類,它能處理的所有事情。初始化MediaPlayer類:MediaPl

『貳』 如何進入Recovery模式 安卓手機進入Recovery模式方法大全

Recovery模式具體方法如下:

工具:oppo r9

1、首先長按手機電源鍵,選擇讓專手機重啟屬。

閱讀全文

與screenrecandroid代碼相關的資料

熱點內容
ps3文件分割視頻 瀏覽:280
微信圖片一鍵轉發軟體 瀏覽:331
如何判斷s200plc編程電纜 瀏覽:691
太原編程培訓班哪個好 瀏覽:171
樹葉吹奏教程 瀏覽:6
社交app帶來了哪些社會問題 瀏覽:394
如何安裝愛寶8800數據採集器 瀏覽:712
文件保存了怎麼找不到了 瀏覽:476
彩票網站怎麼辨真假 瀏覽:840
pr找不到該文件 瀏覽:963
java移除panel 瀏覽:354
jsp填充jsp 瀏覽:166
海關外貿大數據在哪裡查 瀏覽:381
思特奇java筆試題 瀏覽:121
葫蘆俠在手機中的文件名 瀏覽:813
plc編程應該怎麼收錢 瀏覽:584
c語言中源文件由什麼組成 瀏覽:890
linuxhttpdphp配置文件 瀏覽:607
拆單數據要怎麼保存 瀏覽:17
mac電腦怎樣壓縮文件到100m 瀏覽:645

友情鏈接