2009-01-23 57 views
5

Cách tốt nhất để phát âm thanh bằng cách sử dụng thư viện J2ME Media là gì? Ví dụ, tôi có nên sử dụng MMAPI hay tôi nên sử dụng phương thức platformRequest (String s) của Midlet?Phát Âm thanh với J2ME

+0

Nó thực sự phụ thuộc vào những gì bạn muốn làm ... bạn nên cụ thể hơn về những gì bạn đang sau. Nếu bạn muốn chơi một MP3, nó khá dễ dàng. Nếu bạn muốn truyền phát âm thanh qua internet, điều đó không thể thực hiện được. – joeforker

Trả lời

3

Bằng cách tốt nhất, ý của bạn là gì? Chất lượng cao nhất? Trải nghiệm người dùng tốt nhất? Hầu hết các tiêu chuẩn tuân thủ? Về cơ bản (đây không phải là loại câu trả lời tốt nhất mà tôi biết), nó phụ thuộc vào nền tảng - một thứ gì đó quen thuộc với J2ME - vì việc triển khai có thể khác nhau và MMAPI thường tận dụng một số phần mềm/phần cứng trình phát phương tiện gốc . Trên BlackBerry, MMAPI hoạt động rất tốt, với một vài điều kỳ quặc.

Lời khuyên của tôi là sử dụng MMAPI ở nơi nó hoạt động tốt - nó sẽ cung cấp cho bạn ứng dụng di động nhất. Thử nghiệm hoặc duyệt qua các bảng dành cho nhà phát triển cho thiết bị mục tiêu cụ thể của bạn để xem nó hoạt động tốt như thế nào trên các thiết bị cầm tay bạn muốn hỗ trợ.

7

Mã sau đây sẽ hoạt động cho 90-95% thiết bị cầm tay có hỗ trợ JSR-135. Đặt hàng của tất cả các cuộc gọi phương thức khác nhau là chìa khóa cho việc này để có thể di chuyển. Đây là âm thanh cục bộ cho JAR của bạn. Bất kỳ audio stream sẽ là một vấn đề hoàn toàn :)

// loads the InputStream for the sound 
InputStream inputStream = this.getClass().getResourceAsStream(musicFile); 

// create the standard Player 
musicPlayer = Manager.createPlayer(inputStream, musicEncoding); 
musicPlayer.prefetch(); 

// add player listener to access sound events 
musicPlayer.addPlayerListener(this); 

if(loopMusic) 
{  
    // use the loop count method for infinite looping 
    musicPlayer.setLoopCount(-1); 
} 

// The set occurs twice to prevent sound spikes at the very 
// beginning of the sound. 
VolumeControl volumeControl = 
    (VolumeControl) musicPlayer.getControl("VolumeControl"); 
volumeControl.setLevel(curVolume); 

// finally start the piece of music 
musicPlayer.start(); 

// set the volume once more 
volumeControl = (VolumeControl) musicPlayer.getControl("VolumeControl"); 
volumeControl.setLevel(curVolume); 

// finally, delete the input stream to save on resources 
inputStream.close(); 
inputStream = null; 
0

Trên một số thiết bị sử dụng một yêu cầu nền tảng sẽ gây ra ứng dụng của bạn phải đóng cửa và cho người khác yêu cầu nền tảng nhất định sẽ sụp đổ các thiết bị (bất cứ điều gì khác với HTTP URL trên một số thiết bị) .

Vì vậy, bạn có thể cần phải sử dụng cả hai phương pháp tiếp cận, chọn phương pháp nào để sử dụng dựa trên thử nghiệm thiết bị.

-1

Âm thanh cục bộ (trong tệp Jar) dễ hỗ trợ hơn như được giải thích trong câu trả lời của Shane ở trên. Đối với nội dung trên web, nó trở nên khó khăn hơn vì có rất nhiều yếu tố như vấn đề kết nối máy chủ, bộ nhớ điện thoại di động vv. Nếu bạn sẽ được yêu cầu hỗ trợ một số lượng lớn các thiết bị cầm tay sau đó nó được khuyến khích để làm việc trên 2-3 kỹ thuật thực hiện và sử dụng cho phù hợp.

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