2012-07-18 45 views
8

Trong ứng dụng Android của tôi, tôi muốn người dùng nhấn một lần một lần, tự động phát video trên youtube và khi video được thực hiện, người dùng sẽ ngay lập tức quay lại ứng dụng. Cách tốt nhất để làm điều này trong Android là gì?Phát video trên youtube trong ứng dụng Android

Tôi đã thử sử dụng ý định. Điều này làm việc trong đó video đi lên trên những gì tôi nghĩ là một trang web youtube. Tuy nhiên, việc phát video yêu cầu một lần nhấn khác. Tôi muốn tránh điều này nếu có thể.

Tôi đã thử toàn bộ MediaPlayer, preparAsync, setOnPreparedListener và không bao giờ hoạt động. Đối với một số lý do onPrepared không bao giờ được gọi. Không có ngoại lệ nào được ném ra. Tôi đang sử dụng trình giả lập để kiểm tra và tôi mới sử dụng Android nên tôi không chắc liệu hành vi sẽ khác trên các thiết bị vật lý hay không.

Tôi nhận được tính năng này hoạt động tốt trên iOS bằng cách sáng tạo với các bản xem trước trên web. Tôi hy vọng nó đơn giản hơn trên Android. Các docs chắc chắn làm cho nó âm thanh thẳng về phía trước.

Chúc mừng!

+0

Điều này có thể giúp http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ – ASP

Trả lời

29

Cập nhật: Mọi thứ bên dưới vẫn đúng, nhưng official YouTube API for Android hiện khả dụng.

Cho đến nay, cách dễ nhất để phát video trên YouTube trên Android đơn giản là kích hoạt Ý định để khởi chạy ứng dụng YouTube dành cho Android gốc. Tất nhiên, điều này sẽ không thành công nếu bạn không sử dụng thiết bị Google được chứng nhận, thiết bị đó không có bổ sung các ứng dụng của Google. (Kindle Fire có lẽ là ví dụ lớn nhất của một thiết bị như vậy). Vấn đề với phương pháp này là người dùng sẽ không tự động quay trở lại ứng dụng của bạn khi video kết thúc; họ phải nhấn nút Quay lại và vào thời điểm này, bạn có thể đã mất chúng.

Là tùy chọn thứ hai, bạn có thể sử dụng API MediaPlayer để phát video YouTube. Nhưng có ba cảnh báo với cách tiếp cận này:

1) Bạn cần thực hiện cuộc gọi tới API dịch vụ web GData của YouTube, chuyển ID đó cho ID của video. Bạn sẽ lấy lại một tấn siêu dữ liệu, cùng với đó là URL RTSP mà bạn nên chuyển tới MediaPlayer để phát lại luồng được mã hóa H.264. Đây có lẽ là lý do tại sao nỗ lực của bạn để sử dụng MediaPlayer không thành công; có thể bạn không sử dụng đúng URL để phát trực tiếp.

2) Cách tiếp cận GData/MediaPlayer sẽ chỉ phát lại nội dung có độ phân giải thấp (176x144 hoặc tương tự). Đây là một quyết định có chủ ý về một phần của YouTube, để ngăn chặn hành vi trộm cắp nội dung. Tất nhiên, điều này không cung cấp một trải nghiệm rất thỏa đáng. Có các hacks cửa sau để có luồng có độ phân giải cao hơn nhưng chúng không được hỗ trợ trên tất cả các bản phát hành của Android và sử dụng chúng là vi phạm điều khoản dịch vụ của YouTube.

3) Luồng RTSP có thể bị chặn bởi một số mạng/tường lửa bên trong, vì vậy phương pháp này có thể không hoạt động đối với tất cả người dùng.

Tùy chọn thứ ba là nhúng một WebView vào ứng dụng của bạn. Có hai phương pháp bạn có thể thực hiện tại đây:

1) Bạn có thể nhúng đối tượng Flash và chạy trình phát Flash chuẩn cho máy tính để bàn cho YouTube. Bạn thậm chí có thể sử dụng API Javascript để điều khiển trình phát và chuyển tiếp sự kiện trở lại ứng dụng Android gốc. Cách tiếp cận này hoạt động tốt, nhưng tiếc là Flash không được chấp nhận trên nền tảng Android và sẽ không hoạt động cho Android 4.1 trở lên.

2) Bạn có thể nhúng thẻ <video> để phát YouTube qua HTML5. Hỗ trợ cho việc này thay đổi giữa các bản phát hành khác nhau của Android. Nó hoạt động tốt trên Android 4.0 và sau đó; các bản phát hành trước đó có phần nào hỗ trợ HTML5 <video>. Vì vậy, tùy thuộc vào phiên bản ứng dụng Android của bạn phải hỗ trợ, bạn có thể sử dụng phương pháp kết hợp HTML5 nhúng trên Android 4.x trở lên và Flash cho tất cả các phiên bản Android trước đó.

Có một vài chủ đề ở đây trên StackOverflow về cách sử dụng HTML5 để phát video YouTube; không ai trong số họ thực sự mô tả toàn bộ quá trình bạn phải làm theo ở một nơi. Dưới đây là các liên kết đến một vài trong số họ:

Android - How to play Youtube video in WebView?

How to embed a YouTube clip in a WebView on Android

Play Youtube HTML5 embedded Video in Android WebView

Tất cả điều này sẽ nhận được một cách đáng kể dễ dàng hơn trong những tuần/tháng tới; tại Google I/O 2012, họ đã giới thiệu/giới thiệu API YouTube mới dành cho Android sẽ hỗ trợ nhúng trực tiếp nội dung YouTube trong ứng dụng của bạn, hỗ trợ đầy đủ cho Android 2.2 (khoảng 95% cơ sở người dùng Android khi viết bài này). Nó không thể đến đủ nhanh.

+0

API sắp tới có vẻ tuyệt vời! Cảm ơn bạn về thông tin. – SundayMonday

+0

Tôi muốn được quan tâm đến con trỏ hướng tới những hacks cửa sau bạn đề cập đến. Và tôi muốn thêm rằng một số thiết bị không thể xem bản tải xuống cho Adobe Flash trên Google Play, có hiệu quả làm hỏng chiến lược kết hợp dựa trên trình phát Flash của YouTube cho Froyo, Gingerbread, Honeycomb. –

+0

@Giuilo - Trong ứng dụng của chúng tôi, chúng tôi quay lại API GData/MediaPlayer nếu không có Flash. Nó tốt hơn một màn hình đen. – mportuesisf

Các vấn đề liên quan