2010-10-04 42 views
18

Tôi đang vật lộn với việc có một luồng phát thanh trực tiếp để hoạt động trên Android. Tôi đang sử dụng lớp học MediaPlayer và chỉ cần đặt URL và chơi nó. Nó hoạt động tốt cho hầu hết các phần, nhưng sau 5-30 phút nó chắc chắn sẽ chết. Trên 2,1 điện thoại (cụ thể hơn một anh hùng) tôi nhận được dữ liệu ghi nhận nàyMã lỗi MediaPlayer của Android?

W/MediaPlayer(7919): info/warning (1, 26) 
I/MediaPlayer(7919): Info (1,26) 
I/MediaStreamService(7919): mPlayer info code:1 extra:26 
E/MediaPlayer(7919): error (1, -11) 
E/MediaPlayer(7919): Error (1,-11) 

đâu MediaStreamService là Dịch vụ của tôi chứa MediaPlayer đầu ra là đến từ các OnInfoListener

trên 2,2 điện thoại tôi không nhận được OnInfoListener gọi lại bao giờ hết, luồng chỉ chết. Nhưng tôi thấy điều này trong logcat

E/HTTPStream(1020): recv failed, errno = 11 (Try again) 
E/HTTPDataSource(1020): retrying connection failed 

Dường như làm việc một cách hoàn hảo trên điện thoại 1.6 của tôi mặc dù thư rác logcat liên tục của

E/PlayerDriver(82): Invalid percentage value <big growing number> 

Câu hỏi của tôi là, những gì làm các mã lỗi (1, 26) nghĩa là? Điều gì khiến MediaPlayer của tôi gặp sự cố? Vấn đề 2.1 có liên quan đến vấn đề 2.2 không? Cảm ơn, Nathan

Edit: tôi đang tìm kiếm trong mã nguồn để OnInfoListener và thấy public static final int MEDIA_INFO_UNKNOWN = 1; Tôi không chắc chắn chính xác những gì nó có nghĩa là, và không thể tìm thấy nơi những tính năng bổ sung được lưu giữ một trong hai .. Bất kỳ cái nhìn sâu sắc về những gì Media info unknown có nghĩa là gì? hoặc những gì 26 này là viết tắt của sẽ rất đánh giá cao.

Trả lời

29

Câu hỏi của tôi là, mã lỗi (1, 26) có nghĩa là gì?

  • 26 nghĩa PVMFInfoErrorHandlingStart, chỉ cần một dấu hiệu lỗi

Lỗi này là -11, có nghĩa PVMFErrTimeout. Bạn có thể xem các tệp định nghĩa tại đây link text

+0

nhờ liên kết! – schwiz

+12

Liên kết bị hỏng. Bạn có thể tìm thấy nó ở đây (https: // github.com/android/platform_external_opencore/blob/master/pvmi/pvmf/include/pvmf_return_codes.h) – efeyc

0

Có thể dữ liệu RDS? Bạn có đặt kích thước bộ đệm theo cách thủ công không?

+0

Có cách nào để đặt kích thước bộ đệm trên 'MediaPlayer' có thể tôi đã bỏ lỡ điều đó. – schwiz

+1

Dường như có sự kiện để xem trạng thái của bộ đệm: http://developer.android.com/reference/android/media/MediaPlayer.html – ykatchou

0

Để bắt đầu phát lại, bắt đầu() phải được gọi. Sau khi start() trả về thành công, đối tượng MediaPlayer đang ở trạng thái Started. isPlaying() có thể được gọi để kiểm tra xem đối tượng MediaPlayer có ở trạng thái Started hay không.

Trong khi ở trạng thái Started, động cơ máy nghe nhạc nội bộ gọi một người dùng cung cấp OnBufferingUpdateListener.onBufferingUpdate() phương pháp gọi lại nếu một OnBufferingUpdateListener đã được đăng ký trước qua setOnBufferingUpdateListener (OnBufferingUpdateListener). Lệnh gọi lại này cho phép các ứng dụng theo dõi trạng thái đệm trong khi phát trực tuyến âm thanh/video.

Khởi động cuộc gọi() không ảnh hưởng đến đối tượng MediaPlayer đã ở trạng thái Đã bắt đầu.

Có thể đó là một phần của phản hồi.

+0

OnBufferingUpdate không nhận được trên 2.2 thiết bị với luồng này vì tệp được kích hoạt không xác định. (kích thước vô tận một luồng đài phát thanh) – schwiz

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