2014-02-21 254 views
0

在android中我有一個3分鐘的長度的視頻。我有三個按鈕。 在第一個按鈕上點擊我只想要第一分鐘視頻播放。 第二個按鈕點擊第一分鐘到第二分鐘視頻播放只有 第三個按鈕點擊視頻的其餘部分。在Android中播放視頻的分段

點擊順序可以改變。可以做到嗎?

我用下面的代碼

videoPlayer = (VideoView) findViewById(R.id.videoPlayer); 
    videoPlayer.setOnPreparedListener(this); 
    videoPlayer.setOnCompletionListener(this); 
    videoPlayer.setKeepScreenOn(true);  
    // videoPlayer.setVideoPath(root + "/" + pathToFile); 
    // ResourceUtil.setVideo(videoPlayer,"cbse_g08_s01_l01_t01_sc11"); 
    videoPlayer.setVideoPath(ResourceUtil.getResourceFilePath("cbse_g08_s02_l16_t01_03a", 
      MSConstants.RESOURCE_TYPE_VIDEO)); 


    leftButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.i("arv", "click"+"left"+videoPlayer.getDuration()); 
      //if(videoPlayer.canSeekBackward()()) 
       videoPlayer.seekTo(videoPlayer.getDuration()); 
      videoPlayer.start(); 
     } 
    }); 

    midButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.i("arv", "click"+"mid"+videoPlayer.getCurrentPosition()); 
      //if(videoPlayer.canSeekForward()) 
       videoPlayer.seekTo(videoPlayer.getDuration()/5); 
       videoPlayer.start(); 
     } 
    }); 

    rightButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.i("arv", "click"+"right"); 
      //if(videoPlayer.canSeekForward()) 
       videoPlayer.seekTo(videoPlayer.getDuration()/10); 
      videoPlayer.start(); 
     } 
    }); 

但它從給定的時間結束播放的視頻。 有沒有其他辦法可以做到這一點。

回答

0

好吧,你只需要創建一個Async類,並在運行時處理持續時間。無論何時達到所需的持續時間,循環完成並且視頻暫停。這裏試試這個代碼,它具有根據你的需要暫停視頻的基本功能。

private class Preview extends AsyncTask<Void,Void,Void> {  

    @Override 
    protected void onPreExecute(){     

     //handle any code if u want here 
    } 


    protected Void doInBackground(Void... params) { 
     //leftButton,rightButton,midButton are booleans you have to make 
        if(leftButton){ 
         while(videoPlayer.getCurrentPosition() < videoPlayer.getDuration()/5) 
          Log.d("[email protected][email protected]","in loop1");     
        } 
        if(midButton){ 
         while(videoPlayer.getCurrentPosition() < videoPlayer.getDuration()/10) 
          Log.d("[email protected][email protected]","in loop2");     
        } 
        if(rightButton){ 
         while(videoPlayer.getCurrentPosition() < videoPlayer.getDuration()) 
          Log.d("[email protected][email protected]","in loop3");     
        } 

     return null; 
    } 

    @Override  
    protected void onPostExecute(Void v) { 
     /**Can pause or stop the videoview/mediaplayer as per your need*/ 

     videoPlayer.pause(); // <= this is the key ;) 
    }  

} 

之後,execute異步每次按鈕點擊。

leftButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Log.i("arv", "click"+"left"+videoPlayer.getDuration()); 
     //if(videoPlayer.canSeekBackward()()) 
      videoPlayer.seekTo(videoPlayer.getDuration()); 
     videoPlayer.start(); 

     leftButton=true; // <= boolean to be set 
     new Preview().execute(); // <= start Async 
    } 
}); 

同樣附加在其他按鈕。根據您的需求對代碼進行更改。希望能幫助到你。乾杯。 :)

+1

感謝,它正在工作 – arv

+0

在每次播放點擊按鈕...它需要一些暫停(加載時間,我認爲)來玩它。如何刪除此播放暫停。 – arv