12/08/2018, 16:08

[Android] Play YouTube

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 ...

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

  1. 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'
        }
    
  2. 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);
    
  3. 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
      • Tạo API key: https://developers.google.com/youtube/android/player/register
        //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

  4. 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.
0