2012-06-07 2 views
2

На самом деле, этот вопрос extendsthis one.Граф нажал кнопку количество

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

if(action == KeyEvent.ACTION_DOWN) 
    { 
     Toast.makeText(context, "Pressed 1 time", Toast.LENGTH_SHORT).show(); 
    } 
    if(action == KeyEvent.ACTION_MULTIPLE) 
    { 
     k = event.getRepeatCount(); 
     if(k == 2) 
      Toast.makeText(context, "Pressed 2 times", Toast.LENGTH_SHORT).show(); 
     if(k == 3) 
      Toast.makeText(context, "Pressed 3 times", Toast.LENGTH_SHORT).show(); 
     if(k>=4) 
     { 
      String a = Integer.toString(k); 
      Toast.makeText(context, "Pressed " + a + " times.", Toast.LENGTH_SHORT).show(); 
     } 
    } 

Но когда я нажимаю кнопку, я получаю тост «Нажатый 1 раз». Я всегда получаю это, система никогда не вступает в другие if s.

Как я могу это решить?

Благодаря

Сложение До сих пор не может решить эту проблему. Вот что я делаю:

if(action == KeyEvent.ACTION_DOWN) 
    { 
     k++; 
     try 
     { 
      wait(1000); 
     } catch (InterruptedException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
     if(k == 1) 
      Toast.makeText(context, "Pressed 1 time", Toast.LENGTH_SHORT).show(); 
     if(k == 2) 
      Toast.makeText(context, "Pressed 2 times", Toast.LENGTH_SHORT).show(); 
     if(k == 3) 
      Toast.makeText(context, "Pressed 3 times", Toast.LENGTH_SHORT).show(); 
     if(k>=4) 
     { 
      String a = Integer.toString(k); 
      Toast.makeText(context, "Pressed " + a + " times.", Toast.LENGTH_SHORT).show(); 
     } 
     k = 0; 
    abortBroadcast(); 
+0

Вы уверены, что многоканальные наушники генерируют «ACTION_MULTIPLE» KeyEvents? – Kheldar

+0

Нет, я совсем не уверен. Надеюсь, он генерирует :) Я хочу управлять кнопкой. На данный момент нажатие кнопки выполняет функцию PLAY/STOP для проигрывателя, я хочу, чтобы она переходила к следующему треку, если я дважды нажимаю, или перейдите к предыдущему, если я втройне нажмите. Интересно, как я могу это сделать. – azizbekian

+0

Вы можете достичь этого, используя простой счетчик и увеличив его в 'KeyEvent.ACTION_UP'. –

ответ

3

«несколько повторяющихся ключевых событий произошли в ряд» является определение ACTION_MULTIPLE, вы только нажатием одной кнопки.

if(action == KeyEvent.ACTION_DOWN) 
{ 
    k++; 
    Toast.makeText(context, "Pressed " + Integer.toString(k) + " time(s).", Toast.LENGTH_SHORT).show(); 
} 

Edit:

О я вижу, что вы хотите, чтобы следующий трек на двойной или обратно на тройной щелчок. Я предлагаю реализовать поток. В списке KeyEvent.ACTION_DOWN нажмите клавишу. В вашем потоке, скажем, позвоните в ожидании (500) и проверьте, сколько раз ваша кнопка была нажата, и действуйте соответственно, и установите счетчик на 0.

+0

Хороший вызов, это проблема определения ACTION_MULTIPLE: D – Kheldar

+0

Отредактированный мой ответ в соответствии с вашей проблемой, проверьте его. –

+0

@ AntalHorváth, редактировал вопрос. – azizbekian

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