[英]How to play an mp3 file between a range of milliseconds using android MediaPlayer?
我可以使用android的MediaPlayer對象播放mp3文件。 但是我想在毫秒范圍內播放,例如在30000 ms到40000 ms之間(僅10秒)。 我該如何實現?
目前,我擁有以下代碼,
private MediaPlayer mPlayer;
public void play() {
try {
mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.mp3_file);
if (mPlayer != null) {
int currentPosition = mPlayer.getCurrentPosition();
if (currentPosition + 30000 <= mPlayer.getDuration()) {
mPlayer.seekTo(currentPosition + 30000);
} else {
mPlayer.seekTo(mPlayer.getDuration());
}
mPlayer.start();
}
}
catch(Exception e) {
}
}
任何幫助是極大的贊賞。 謝謝!
您可以使用以下方法:
public int getCurrentPosition ()
要獲取以milSeconds為單位的當前時間,可能是在每1000 milSeconds運行一次的Handler中進行測試,以查看:
if(mPlayer.getCurrentPosition() >= (mPlayer.getDuration + 40000));
使用完媒體文件后,請不要忘記釋放它:
public void release();
mPlayer.release();
釋放與此MediaPlayer對象關聯的資源。 使用MediaPlayer完成后,調用此方法被認為是一種好習慣。 特別是,每當應用程序的Activity暫停(調用其onPause()方法)或停止(調用其onStop()方法)時,都應調用此方法以釋放MediaPlayer對象,除非應用程序具有特殊的需要保持物體周圍。 除了保留不必要的資源(例如內存和編解碼器實例)外,如果不再需要MediaPlayer對象,則無法立即調用此方法也可能導致移動設備持續消耗電池,如果沒有,則導致其他應用程序播放失敗設備上支持同一編解碼器的多個實例。 即使支持同一編解碼器的多個實例,當同時使用不必要的多個實例時,也可能會導致性能下降。
最好的方法是使用Handler來定時停止播放。 啟動播放器,然后使用Handler的postDelayed
調度將停止播放器的Runnable
的執行。 您還應該僅在初始搜尋完成后才啟動播放器。 像這樣:
public class PlayWord extends Activity implements MediaPlayer.OnSeekCompleteListener {
Handler mHandler;
MediaPlayer mPlayer;
int mStartTime = 6889;
int mEndTime = 7254;
final Runnable mStopAction = new Runnable() {
@Override
public void run() {
mPlayer.stop();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final TextView tv = new TextView(this);
tv.setText("Playing...");
setContentView(tv);
mHandler = new Handler();
mPlayer = MediaPlayer.create(this, R.raw.nicholas);
mPlayer.setOnSeekCompleteListener(this);
mPlayer.seekTo(mStartTime);
}
@Override
public void onDestroy() {
mPlayer.release();
}
@Override
public void onSeekComplete (MediaPlayer mp) {
mPlayer.start();
mHandler.postDelayed(mStopAction, mEndTime - mStartTime);
}
}
還要注意的是, MediaPlayer.create
您使用收益法已經被准備和MediaPlayer的prepare
不應該叫再喜歡你在你的code.on屏幕做。 活動結束時,我還添加了對release()
的調用。
另外,如果要在搜索完成后更新UI,請注意,通常是從非UI線程調用此方法的。 您將必須使用處理程序來發布任何與UI相關的操作。
我從以下站點復制了此文件: Android:如何在特定的毫秒數到來時停止播放媒體(mp3)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.