12/08/2018, 14:35

Hướng dẫn lập trình Android sử dụng Youtube API

Mục tiêu của bài viết: YouTube Data API v3: Hướng dẫn lấy các video của youtube của Google cung cấp. YouTube Android Player API: Hướng dẫn bạn dùng luôn cái player của google cung cấp để play video youtube. 1. YouTube Data API v3: Hướng dẫn lấy các video của youtube của Google cung ...

Mục tiêu của bài viết:

  • YouTube Data API v3: Hướng dẫn lấy các video của youtube của Google cung cấp.
  • YouTube Android Player API: Hướng dẫn bạn dùng luôn cái player của google cung cấp để play video youtube.

1. YouTube Data API v3: Hướng dẫn lấy các video của youtube của Google cung cấp

// link lấy danh sách playlist từ channel id (thay id của channel vào %s dưới là ok)
public static String linkChannel = "https://www.googleapis.com/youtube/v3/playlists?part=snippet,contentDetails&maxResults=%s&channelId=%s&fields=items(contentDetails,id,snippet(title,thumbnails(high(url),default))),nextPageToken,pageInfo&key="
            + DEVELOPER_KEY;


// link lấy danh sách video từ playlist id
public static String linkPlaylist = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=%s&playlistId=%s&fields=items(snippet(title,thumbnails(high(url),default),resourceId(videoId))),nextPageToken,pageInfo&key="
            + DEVELOPER_KEY;

// link lấy thông tin chi tiết của 1 video youtbe
public static String linkVideo = "https://www.googleapis.com/youtube/v3/videos?part=id,snippet,contentDetails,statistics&id=%s&maxResults=50&fields=items(id,contentDetails(duration),snippet(title,thumbnails(high(url))),statistics(viewCount,likeCount))&key="
            + DEVELOPER_KEY;

Để tạo lấy DEVELOPER_KEY, bạn có thể vào https://console.developers.google.com rồi tạo project mà lấy (bạn nhớ enable cái YouTube Data API nhé). Để test bạn dùng luôn cái DEVELOP_KEY mình mà test cho nhanh nhé (nhưng khi tạo app up lên google play, nhớ tạo cái khác nhá) public static String DEVELOPER_KEY = "AIzaSyB5Jgo4jTYPq5Nep-7k2KqQCHjV4wbWC-w";

Còn mấy cái id kia lấy đâu nhỉ? Lấy luôn ở youtube.com còn đâu nữa :v

Ví dụ channel của mình https://www.youtube.com/channel/UCOgl0poXA0PzbtC037vP0GA ==> channel id: UCOgl0poXA0PzbtC037vP0GA Mở tiếp 1 cái playlist trong channel mình nào: https://www.youtube.com/playlist?list=PLe6dgR6eSaYHWvFHgupG9P1aSUSCEbeI5 ==> playlist id: PLe6dgR6eSaYHWvFHgupG9P1aSUSCEbeI5 Mở tiếp 1 cái video youtube: https://www.youtube.com/watch?v=3opoQYchvCI&list=PLe6dgR6eSaYHWvFHgupG9P1aSUSCEbeI5&index=1 ==> video id: đây 3opoQYchvCI

Từ trên, bạn thấy follow sau của bất kỳ channel nào trên youtube: Channel ID --> Playlist ID --> Video ID Chút download source code example mình dưới chạy chử để hiểu hơn nhé.

2. YouTube Android Player API: Hướng dẫn bạn dùng player của google cung cấp để play video youtube

Đầu tiên download file YouTubeAndroidPlayerApi.jar sau, cho vào thư libs của project: https://github.com/nguyenvanthieub/YoutubeApp/tree/PlayYoutube/app/libs Nhớ chuột phải click Add as Library để nó thêm vào build.gradle dòng sau: compile files('libs/YouTubeAndroidPlayerApi.jar')

Layout thì cho cái

    <com.google.android.youtube.player.YouTubePlayerView
        android:id="@+id/youtube_view"
        android:layout_awidth="match_parent"
        android:layout_height="match_parent"
        >
    </com.google.android.youtube.player.YouTubePlayerView>

vào chỗ bạn muốn play (link: https://github.com/nguyenvanthieub/YoutubeApp/blob/PlayYoutube/app/src/main/res/layout/activity_player.xml)

Còn ở bên Activity nhớ để extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener

Sau đó thêm 2 method Override sau:

// xử lý khi thành công
    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
        youTubePlayer.loadVideo(VIDEO);
        youTubePlayer.setFullscreen(true);
    }

// xử lý khi bị lỗi, cái lỗi hay gặp nhất là khi chiếc điện thoại dùng app này chưa cài app Youtube (thường mấy cái máy ảo bạn test chưa cài app Youtube đâu)
    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
        Toast.makeText(this, "Error :" + youTubeInitializationResult.toString(), Toast.LENGTH_LONG)
                .show();
    }

(link: https://github.com/nguyenvanthieub/YoutubeApp/blob/PlayYoutube/app/src/main/java/com/thieumao/youtubeapp/activity/PlayerActivity.java)

3. Ví dụ

  • Ví dụ 1 đơn giản chút: https://github.com/nguyenvanthieub/YoutubeApp/tree/PlayYoutube Từ fix luôn 1 cái id playlist trong app, rồi lấy danh sách id video. Click vào từng cái video đó sử dụng YouTube Android Player API rồi play luôn thôi

  • Ví dụ 2 phức tạm hơn chút xíu: https://github.com/QuizSystem/PlayYoutube Ở source code example này có những màn hình sau, Màn 1: lấy danh sách các id của các channel youtube, mình đã để ở firebase Màn 2: từ mỗi 1 channel đó, mình sẽ hiện ra các playlist của channel đó Màn 3: từ mỗi 1 playlist đó, mình sẽ cho hiện ra các video của playlist đó Màn 4: play video youtube sử dụng Youtube Android Player API trên cung cấp với id video youtube lấy từ màn 3 gửi id video sang.

0