2014-02-21 3 views
0

В андроиде У меня есть видео длиной в 3 минуты. У меня три кнопки. При первом нажатии кнопки я хочу только 1-го минут воспроизведения видео. На второй кнопке нажмите от 1 мин до 2 мин только воспроизведение видео только , а на третьей кнопке щелкните остальную часть видео.Воспроизведение подраздела видео в 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

Смежные вопросы