2014-09-17 9 views
4

В моем медиаплеере я добавил представление, которое отображается, если нажата клавиша меню, я хочу, чтобы она была скрыта через некоторое время, т.е. пользователь не хочет видеть вид, вид горизонтально, и я хочу, чтобы он через несколько секунд спрятался, чтобы пользователь не нажал правую или левую клавишу.андроид обнаруживает неактивность пользователя после нажатия клавиши

Я помещаю свою логику здесь, но она не выработала: «Подобный мой взгляд, чтобы показать»

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     super.onKeyDown(keyCode, event); 
     lastUsed = System.currentTimeMillis(); 



case KeyEvent.KEYCODE_MENU: 

       similar.setVisibility(View.VISIBLE); 
       similar.bringToFront(); 
       similar.requestFocus(); 
       similar.bringToFront(); 
       nowHide() 
} 
public void nowHide(){ 
    new Thread(new Runnable() { 
       public void run() { 

        while(true){ 
        try { 
         Thread.sleep(5000); 
        } catch (InterruptedException e) { 

         e.printStackTrace(); 
        } 

         if(getLastInteractionTime()+5000 >= System.currentTimeMillis()) 
         { 
          Log.d("MOVIE PLAY ACTIVITY:SADIP", "check time success"); 

          runOnUiThread(new Runnable() { 
          public void run() { 
           similar.setVisibility(View.GONE); 
          } 
          }); 

         } 
              } 
       } 
       }).start(); 
       } 



public long getLastInteractionTime() { 
     return lastUsed; 
    } 

    public long setLastInteractionTime(int lastInteraction) { 
     lastUsed = lastInteraction; 
     return lastUsed; 
    } 

код никогда не доехал до

if(getLastInteractionTime()+5000 >= System.currentTimeMillis()) 

А также У меня не было идеи прекратить эту тему

Как это сделать? любые другие методы были бы более оценены Заранее спасибо.

+0

вы можете попробовать метод onUserInteraction() в классе деятельности –

ответ

7

Попробуйте это. Он будет уведомлять с тостом о неактивном пользователе через 5 секунд. onUserInteraction метод является основной частью этого кода.

Handler handler; 
Runnable r; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    handler = new Handler(); 
    r = new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      Toast.makeText(MainActivity.this, "user inactive", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }; 
    startHandler(); 
} 
@Override 
public void onUserInteraction() { 
    // TODO Auto-generated method stub 
    super.onUserInteraction(); 
    stopHandler();//stop first and then start 
    startHandler(); 
} 
public void stopHandler() { 
    handler.removeCallbacks(r); 
} 

public void startHandler() { 
    handler.postDelayed(r, 5000); 
} 
+0

спасибо это действительно выработанные :) –

+0

@ArmasCyndromic вы можете –

+1

@IllegalArgument Это отличное решение. Это безопасно от утечек памяти? – Apostrofix