2016-11-16 1 views
0

ВведениеYouTube Android Player API - Programatically выполнить щелчок на «пропустить объявление»

Я работаю в приложение для Android, который получает команды через HTTP сетевых команд (не через прикосновения).

Что мне нужно выполнить

Я хочу быть в состоянии, когда пользователь дает команду с помощью команды HTTP, который хочет выполнить щелчок на скипе добавить, программно проинструктировать YouTube-плеер (встроенным в моем приложение), чтобы пропустить добавление.

Глядя на доступные функции, я могу проверить, показывает ли игрок рекламу или нет, но ничего не связано с возможностью пропустить ее с помощью метода.

Как я пытаюсь решить это

Я пытаюсь идти через:

  1. Получить все мнения ребенка и их Чайлдс о деятельности
  2. Выяснить мнение, что Мне нужно выполнить щелчок
  3. Выполните щелчок через view.performClick()

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

Любые идеи, которые могут помочь решить основную проблему?

Заранее спасибо.

ответ

1

В идеале Google может предоставить api-вызов, который может пропускать рекламное объявление, поскольку оно отображается на экране «Вы можете пропустить объявление в 5, 4, 3, 2, 1s».

Для верхних боксов телевизора у этой проблемы есть такая же проблема. Обычно для них нет мыши, поэтому вы не можете переместить курсор на кнопку «пропустить объявление» и нажать.

Мое решение заключается в создании имитируемого события касания, как вы можете найти из этого обсуждения: How to simulate a touch event in Android?.

Трюк будет при вычислении x, y для кнопки «пропустить объявление».

+0

Это именно то, как я это сделал, но мне не нравится решение. Во всяком случае, это был единственный, который я понял. Благодарю. –

0

я смог найти вид во время выполнения:

List<View> views = getAllChildrenBFS(mYouTubeView); 
for (final View v: views) { 
    if (v.toString().contains("skip_ad_button")){ 
     v.setFocusable(true); 
     v.setFocusableInTouchMode(true); 
     v.requestFocus(); 
     break; 
    } 
} 

я установить фокус на кнопке, так что пользователь может пропустить его.

(вы можете попробовать использовать performClick, хотя я не уверен, что youtube будет очень рад этому ...)


Функция поиска BFS:

private List<View> getAllChildrenBFS(View v) { 
    List<View> visited = new ArrayList<View>(); 
    List<View> unvisited = new ArrayList<View>(); 
    unvisited.add(v); 

    while (!unvisited.isEmpty()) { 
     View child = unvisited.remove(0); 
     visited.add(child); 
     if (!(child instanceof ViewGroup)) continue; 
     ViewGroup group = (ViewGroup) child; 
     final int childCount = group.getChildCount(); 
     for (int i=0; i<childCount; i++) unvisited.add(group.getChildAt(i)); 
    } 

    return visited; 
} 

Скопировано из: https://stackoverflow.com/a/18818750

Благодаря этому волшебному сообществу и поблагодарить господина!

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