2015-03-11 2 views
0

Я показываю видео в webView, и я замечаю особенности поведения устройств Kindle. Во-первых, вы должны выдвигать кнопки устройства (на Kindle Fire HD), который вызывает видеоконтроль для видео. При нажатии кнопки «Назад» во время управления элементы управления сначала скроют элементы управления видео. И затем вам нужно снова нажать кнопку «Назад», чтобы закрыть представление. Я пытаюсь уволить мнение о первом обратном нажатии, даже когда контроль идет вверх. Конфликт, с которым я столкнулся, заключается в том, что я не могу зафиксировать это нажатие первой кнопки, когда элементы управления находятся вверху. Как только элементы управления исчезнут, и я нажму кнопку «Назад», она появится в моем @Override onBackPressed() или ниже dispatchKeyEvent(), который я добавил, чтобы попытаться решить эту проблему.Кнопка Android back на медиа-контроллере для видеороликов, воспроизводимых с webView

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    int action = event.getAction(); 
    int keyCode = event.getKeyCode(); 
    switch (keyCode) { 
    case KeyEvent.KEYCODE_BACK: 
     if (action == KeyEvent.ACTION_DOWN) { 
      // TODO 
      finish(); 
     } 
     return true; 
    default: 
     return super.dispatchKeyEvent(event); 
    } 
} 

Повторное нажатие кнопки «Назад» (после исчезновения элементов управления) зарегистрирует ключEvent. Но вам все равно придется нажать его дважды. Кто-нибудь еще столкнулся с этим конфликтом и/или вы знаете об исправлении? Я добавил как dispatchkeyEvent(), так и onBackPressed(), потому что я надеялся, что диспетчерKeyEvent() поймает первое обратное нажатие, а затем onBackPressed() поймает второй OR dispatchKeyEvent(), который поймает оба. Я ничего не получаю, пока элементы управления находятся на первом обратном нажатии. Заранее спасибо!

+0

Вы пытались удалить 'finish()'? Что делает 'finish()' do? –

+0

Если я удаляю finish(), я вообще не могу закрыть представление, даже если onBackPressed есть. Кажется, что dispatchKeyEvent имеет приоритет над onBackPressed, потому что dispatchKeyEvent поймает все нажатия кнопок. Без финиша ничего не происходит. Мне нужно закончить дважды, как-то кажется – portfoliobuilder

+1

Вы уверены, что это не 'ACTION_UP'? –

ответ

1

ACTION_DOWN предоставит вам следующее доступное дочернее действие в иерархии. Однако, я думаю, вы имели в виду ACTION_UP, который доставит вас на родительский экран. Вы также должны попробовать поставить finish() перед оператором if.

+0

Благодарим за помощь! – portfoliobuilder