2012-10-28 18 views
6

Câu hỏi này đã được hỏi trước đây, nhưng bây giờ với các phiên bản Android mới hơn (lên đến Jelly Bean), tôi tự hỏi liệu có tiến trình tải xuống VÀ phát trực tuyến tệp không cùng lúc. Từ API, nó không giống như nó vốn có thể, vì đây là các phương thức setDataSource sẵn có:Android MediaPlayer - Tải xuống và phát trực tuyến cùng lúc được xem lại

void setDataSource(String path) 
Sets the data source (file-path or http/rtsp URL) to use. 
void setDataSource(Context context, Uri uri, Map<String, String> headers) 
Sets the data source as a content Uri. 
void setDataSource(Context context, Uri uri) 
Sets the data source as a content Uri. 
void setDataSource(FileDescriptor fd, long offset, long length) 
Sets the data source (FileDescriptor) to use. 
void setDataSource(FileDescriptor fd) 
Sets the data source (FileDescriptor) to use. 

Thật không may, nó không chấp nhận InputStream dưới bất kỳ hình thức nào. Có những ví dụ sử dụng mã proxy NPR cũ mở một máy chủ web cục bộ trong Ứng dụng Android, tải xuống nội dung từ xa và xuất dữ liệu được yêu cầu đến bất kỳ ổ cắm nghe nào, tuy nhiên mã đó đã hơn 2 tuổi và vẫn được sử dụng làm chuẩn để hoàn thành nhiệm vụ này (mặc dù nhiều người báo cáo rằng có vấn đề nói lắp, v.v.).

Tôi đã xem xét lớp MediaPlayer và muốn mở rộng nó để cho phép hành vi này tuy nhiên rất nhiều triển khai được thực hiện thông qua mã gốc và từ những gì tôi đã đọc, các nhà sản xuất thiết bị khác nhau thực hiện chức năng âm thanh gốc khác nhau (và nếu vậy, tôi không muốn chạm vào nó! :)).

Vì vậy, phương pháp tốt nhất để lưu trữ VÀ đồng thời truyền dữ liệu âm thanh đến (MP3 hoặc OGG) từ máy chủ từ xa, mà không loại bỏ dữ liệu? Tốt hơn với các phiên bản Android 2.2 trở lên, nhưng đầu vào trên bất kỳ API có sẵn nào sẽ được đánh giá cao.

Trả lời

1

Xây dựng proxy cục bộ là đặt cược tốt nhất của bạn. Tôi đã không nhìn vào ví dụ NPR, nhưng tôi đã thực hiện tương tự bằng cách sử dụng Naga. Xem câu trả lời của tôi here.