2012-06-07 1 views
0

Возможно ли реализовать кнопку быстрой перемотки вперед с помощью события кнопки onLongClick?Как запускать onLongClick Event непрерывно?

EDIT

я использовал работоспособной внутри onlongclicklistner и добавить код для справки, кто нуждается :)

Button.setOnLongClickListener(new OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View v) { 


      final Runnable r = new Runnable() 
      { 
       public void run() 
       {//do the forwarding logic here 


        if(Button.isPressed()){ 

          Button.postDelayed(this, 1000); //delayed for 1 sec 
         }else{ 

         Button.postInvalidate(); 
         Button.invalidate(); 
         } 
       } 
      }; 

      Button.post(r); 

      return true; 
      } 
    }); 
+0

Вы хотите сказать, вы хотите, чтобы начать быструю пересылку, когда вы долго кнопкой мыши, и продолжать делать это, пока вы отпустите кнопку? – Eric

+0

да, точно ........ – jxgn

+1

Это может быть полезно: http://stackoverflow.com/questions/7124920/how-to-detect-onlongclick-action-up-event –

ответ

2
  1. В вашем onLongClick случае, установите переменную-член (пример: mShouldFastForward) до true.

  2. В остальной части вашего кода (возможно, каждый кадр играл?) Проверьте, есть ли mShouldFastForward == true; если это так, выполните ускоренную перемотку вперед в этом фрейме.

  3. Используйте onTouch событие захватить MotionEvent.ACTION_UP установить mShouldFastForward в false.

+0

остальная часть вашего кода часть, где вы будете держать это ??? так как активность работает для событий правильно ??? – jxgn

+0

Где бы ни был ваш игровой код. В любом цикле или событии запускается воспроизводимое видео. Или, в худшем случае, по таймеру. – Eric

+1

Я использовал «runnable» в onLongClickListener для достижения того же ........ :) – jxgn

0

Я сделал это в этом проекте (проект не завершен (т.е. полированные), но быстро вперед работы):

https://bitbucket.org/owentech/epileptic-gibbon-android

Взгляните на playerfragment.java:

Я обрабатываю это, используя Threads для ускоренной перемотки медиаплеер.

Пример кода из проекта:

/*******************************/ 
/* Fast-Forward button actions */ 
/*******************************/ 

ffbutton.setOnTouchListener(new View.OnTouchListener() { 

@Override 
public boolean onTouch(View arg0, MotionEvent event) { 

    switch (event.getAction()) { 

     case MotionEvent.ACTION_DOWN: 

      arrays.fastforwardpressed = true; 
      FastForwardThread newFFThread = new FastForwardThread(); 
      arrays.fastforwardfrom = mp.getCurrentPosition(); 
      arrays.fastforwardto = arrays.fastforwardfrom; 

      newFFThread.start(); 
      break; 

     case MotionEvent.ACTION_UP: 

      arrays.fastforwardpressed = false; 
      mp.seekTo(arrays.fastforwardto); 
      break; 

    } 

    return true; 
    } 
}); 


public class FastForwardThread extends Thread 
{ 
    public FastForwardThread() 
    { 
     super("FastForwardThread"); 
    } 

    public void run() 
    { 
     while (arrays.fastforwardpressed == true) 
     { 

      arrays.fastforwardto = arrays.fastforwardto + 10000; 
      int fastforwardseconds = arrays.fastforwardto/1000; 
      int hours = fastforwardseconds/3600, remainder = fastforwardseconds % 3600, minutes = remainder/60, seconds = remainder % 60; 

      String Hours = Integer.toString(hours); 
      String Minutes = Integer.toString(minutes); 
      String Seconds = Integer.toString(seconds); 

      if (Hours.length() == 1) 
      { 
       Hours = "0" + Hours; 
      } 

      if (Minutes.length() == 1) 
      { 
       Minutes = "0" + Minutes; 
      } 

      if (Seconds.length() == 1) 
      { 
       Seconds = "0" + Seconds; 
      } 

      arrays.formattedfftime = Hours + ":" + Minutes + ":" + Seconds; 

      fastforwardHandler.sendEmptyMessage(0); 

      try 
      { 
       sleep(100); 
      } catch (InterruptedException e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    } 
    } 
+0

Я хочу продолжить воспроизведение видео в быстром режиме, как я могу это сделать, вы можете мне помочь? – Hasmukh

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