Как искать видео с помощью API данных YouTube на Android

Я разрабатываю приложение для Android, которому необходимо искать видео на YouTube по ключевому слову. Я использовал API данных Youtube с кодом ниже:

    try {
        youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() {
            public void initialize(HttpRequest request) throws IOException {
            }
        }).setApplicationName("YoutubeQoE").build();

        // Define the API request for retrieving search results.
        YouTube.Search.List search = youtube.search().list("id,snippet");

        // Set your developer key from the Google Cloud Console for
        // non-authenticated requests. See:
        // https://cloud.google.com/console
        search.setKey(DeveloperKey.DEVELOPER_KEY);
        search.setQ("dogs");

        // Restrict the search results to only include videos. See:
        // https://developers.google.com/youtube/v3/docs/search/list#type
        search.setType("video");

        // To increase efficiency, only retrieve the fields that the
        // application uses.
        //search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/default/url)");
        search.setMaxResults(25);

        SearchListResponse searchResponse = search.execute();
        List<SearchResult> lista = searchResponse.getItems();

    } catch (GoogleJsonResponseException e) {
        System.err.println("There was a service error: " + e.getDetails().getCode() + " : "
                + e.getDetails().getMessage());
    } catch (IOException e) {
        System.err.println("There was an IO error: " + e.getCause() + " : " + e.getMessage());
    } catch (Throwable t) {
        t.printStackTrace();
    }

Для de DEVELOPER_KEY я использовал общедоступный доступ к API в консоли разработчика Google.

Но когда я запускаю программу, возникает проблема в строке:

SearchListResponse searchResponse = search.execute();

В файле android manifest.xml у меня есть следующие разрешения:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Я был бы очень признателен, если бы кто-нибудь мог мне помочь


person josesvm    schedule 20.02.2014    source источник
comment
какую ошибку вы получаете?   -  person Ibrahim Ulukaya    schedule 20.02.2014
comment
Уважаемый Josesvm, я делаю то же, что и вы. Но я не смог получить поддержку libraires для этого файла класса Java поиска. Пожалуйста, поделитесь файлами jar или местоположением файлов jar.   -  person BABU K    schedule 28.05.2015


Ответы (3)


Вы можете сравнить свой проект с YouTube Direct Lite для Android. Да, вместо OAuth2 достаточно указать ключ API.

person Ibrahim Ulukaya    schedule 20.02.2014
comment
Спасибо большое. Я нашел проблему с вашей помощью. Хотя я использую его в приложении для Android, я должен использовать ключ API для веб-браузера. - person josesvm; 06.03.2014
comment
у вас есть другой пример или это только youtube Direct lite - person Yene Mulatu; 04.09.2014

Другим способом достижения этого было бы получение результатов от этого:

https://www.googleapis.com/youtube/v3/search?part=snippet&q=eminem&type=video&key=<key>

Вы можете играть с параметрами, чтобы получить то, что вам действительно нужно. Вам также потребуется ключ API из https://console.developers.google.com/.

person Ayush Goyal    schedule 12.10.2014
comment
Не могли бы вы объяснить это. Я пытаюсь получить видео, введя ключевое слово поиска с помощью google youtube api v3. Поэтому я использую пример кода, предоставленный google developers.google.com/youtube/v3/code_samples/ .но мне не удалось получить поддерживающие jar-файлы для этого примера класса.Пожалуйста, поделитесь предложением . - person BABU K; 28.05.2015

Как правило, эта ошибка возникает, когда кто-то пытается выполнить сетевые вызовы в потоке пользовательского интерфейса, что не разрешено в Android. проверьте logcat, если вы получите эту ошибку - (error-android-os-networkonmainthreadexception) Просмотрите этот ответ для решения этой проблемы - исправить исключение neworkonmainthread

person MrSoloDolo    schedule 07.07.2018