[英]Android VideoView detect video is soon finish
我想知道這部電影離結尾是否只有一分鍾的路程。 因此,我使用以下代碼進行檢測。 但是,播放器掛起,無法執行任何操作。 有人可以糾正我的代碼嗎? 謝謝!
public Runnable mPlayToEnd = new Runnable() {
public void run() {
while(true)
{
if(mVideoDisplayView.getDuration() - mVideoDisplayView.getCurrentPosition() <= 1000 * 60)
{
Intent intent = new Intent(WILL_END);
sendBroadcast(intent);
mSendEndEvent = false;
Log.d("123","--Duration = " + mVideoDisplayView.getDuration() + "--");
Log.d("123","--Current = " + mVideoDisplayView.getCurrentPosition() + "--");
Log.d("123","--Soon End--");
}
}
}
};
Handler mCheckEndHandler = new Handler();
mCheckEndHandler.post(mPlayToEnd);
之所以掛起,是因為您有一個無限的while(true)循環,您永遠不會中斷它,並且它會嘗試以最大速度運行,以檢查您是否距離結束還有1分鍾。 您可以做的是定期檢查,例如。 每1秒,然后進行相應處理,因此您的代碼可能如下所示:
public Runnable mPlayToEnd = new Runnable() {
@Override
public void run() {
if (mmVideoDisplayView.getDuration() - mVideoDisplayView.getCurrentPosition() <= 1000 * 60) {
Intent intent = new Intent(WILL_END);
sendBroadcast(intent);
mSendEndEvent = false;
Log.d("123","--Duration = " + mVideoDisplayView.getDuration() + "--");
Log.d("123","--Current = " + mVideoDisplayView.getCurrentPosition() + "--");
Log.d("123","--Soon End--");
}
else {
mCheckEndHandler.postDelayed(mPlayToEnd, 1000);
}
}
}
然后將處理程序聲明為類成員變量,以便在您的runnable中可以訪問它,然后啟動它:
mCheckEndHandler = new Handler();
mCheckEndHandler.post(mPlayToEnd);
將會發生的是您的可運行設備將檢查條件,如果滿足,它將發送廣播,否則,它將在1秒(1000毫秒)內再次運行。 重復整個過程,直到滿足您的條件為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.