[Android] Play YouTube
Bài đăng này đã không được cập nhật trong 7 năm
I.Giới thiệu YouTube không còn lạ gì với chúng ta nữa rồi, nó là mạng xã hội lưu trữ chia sẻ video trực tuyến phổ biến nhất hiện nay trên thế giới. YouTube chứa kho dữ liệu video khổng lồ nó là nguồn tài nguyên vô tận cho các bạn muốn làm app liên quan đến Video. YouTube đã tạo ra app của riêng họ và cung cấp cho chúng ta hoàng hoạt các API để chúng ta có thể sử dụng. Các bạn muốn đưa tính năng đó nên app riêng của mình thì cũng vô cùng đơn giản. Mình xin hướng dẫn các bạn cách đưa mục play video YouTube nên app Android 1 cách đơn giản nhất.
II.Sử dụng YouTubePlayerActivity
-
Sử dụng 1 thư viện cho đỡ phải code nhiều.
- Mình dùng thằng YouTubePlayerActivity
- Thêm đúng 1 câu lệnh đơn giản để add lib
dependencies { compile 'com.thefinestartist:ytpa:1.2.1' }
-
Cách thức setting hoạt động (thư viện đã hỗ trợ tất cả rồi công việc của chúng ta chỉ setting cho nó hoạt động thôi)
- Lấy Thumbnail video: hình ảnh bất kỳ trong video dùng để hiển thị nên video khi chưa play, làm cho giao diện đẹp mắt hơn.
YouTubeThumbnail.getUrlFromVideoId(VIDEO_ID, Quality.HIGH);
-> VIDEO_ID: là các ký tự cuối cùng của 1 link video trên YouTube.
- Play link video bằng cách dùng VIDEO_ID (theo mô tả bên trên) thông qua 1 intent
intent.putExtra(YouTubePlayerActivity.EXTRA_VIDEO_ID, VIDEO_ID);
- PlayerStyle : có 3 loại cho chúng ta nựa chọn (DEFAULT / CHROMELESS/ MINIMAL) , nó thể hiện cách hiển thị video trên màn hình ẩn hiện 1 số tinh năng, cũng thông qua intent để điều khiển
intent.putExtra(YouTubePlayerActivity.EXTRA_PLAYER_STYLE, YouTubePlayer.PlayerStyle.MINIMAL);
- Orientation video : có 4 loại (AUTO / AUTO_START_WITH_LANDSCAPE / ONLY_LANDSCAPE/ ONLY_PORTRAIT) điều khiển hiển thị ngang dọc màn hình
intent.putExtra(YouTubePlayerActivity.EXTRA_ORIENTATION, Orientation.ONLY_PORTRAIT);
- Ẩn hiện thanh điều khiển trên video
intent.putExtra(YouTubePlayerActivity.EXTRA_SHOW_AUDIO_UI, showAudioUi);
- Điều khiển Animation cho việc visible and gone video
intent.putExtra(YouTubePlayerActivity.EXTRA_ANIM_ENTER, R.anim.fade_in); intent.putExtra(YouTubePlayerActivity.EXTRA_ANIM_EXIT, R.anim.fade_out);
- YouTubeUrlParser: lấy link Youtube từ URL hoặc ID
String vidoeId = YouTubeUrlParser.getVideoId(VIDEO_URL); String vidoeUrl = YouTubeUrlParser.getVideoUrl(VIDEO_ID);
- Cuối cùng là play video
YouTubeApp.startVideo(context, VIDEO_ID);
-
Các thức hoạt động
- Dựa trên Youtube API sử dụng các callback bên dưới để điều khiển hoạt động
- YouTubePlayer.OnInitializedListener : lắng nghe việc khởi tạo thành công hay thất bại
- YouTubePlayer.OnFullscreenListener: lắng nghe sự kiện bặt tắt chế độ full màn hình
- YouTubePlayer.PlayerStateChangeListener: lắng nghe sự kiện thay đổi trạng thái Play
- Đăng ký sử dụng
//googleApiKey : key cung cấp bới google playerView = new YouTubePlayerView(this); playerView.initialize(googleApiKey, this);
-
khởi tạo Thành công
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {}
-> Khi khởi tạo thành công hãy thực hiện setting các giá chị cần thiết và play video tại đây
player.setFullscreenControlFlags(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION); player.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); player.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT); player.loadVideo(videoId);
-
Khởi tạo thất bại
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult errorReason) {}
-> Hãy thực thi bắt lỗi tại đây
- Dựa trên Youtube API sử dụng các callback bên dưới để điều khiển hoạt động
-
Các điều kiện bên ngoài để sử dụng
- Do dùng YouTube của Google nên phải dùng thêm lib google play services
compile 'com.google.android.gms:play-services-ads:8.1.0'
- Điều kiện cần máy phải cài Youtube App
IV.Kết Thúc
- Kết quả sử dụng
- Có thể hiển thị được video chất lượng và tốc độ cao một cách mượt mà
- Không cần no xử lý các kỹ thuật phức tạp về hiển thị video
- Giảm tải dung lượng lưu trữ video
- Phải phụ thuộc vào chính sách quản lý nội dung video của Youtube
- Demo: https://github.com/Dattienbtd/viblo_youtube
- Xin cảm ơn các bạn đã đọc.
All rights reserved