2010-08-28 35 views
11

Tôi gặp sự cố thỉnh thoảng phương thức MediaPlayer.create sẽ trả về null, mặc dù tệp âm thanh chắc chắn có ở đó. Trong thực tế, nếu tôi đặt cuộc gọi để tạo thành một vòng lặp while, trình phát đa phương tiện cuối cùng sẽ được tạo thành công. Điều này dường như chỉ xảy ra trên điện thoại của tôi (HTC Hero đang chạy 2.1) và không bao giờ trong trình mô phỏng.Android SDK Mediaplayer.create trả về ngẫu nhiên null

Đây có phải là vấn đề với điện thoại không? Hoặc là có một cách khác nhau tôi nên chơi các tập tin âm thanh?

Lưu ý rằng tôi muốn tải chúng tự động, đó là tôi đang thực hiện lệnh gọi getIndentifer. Nếu có cách chơi tốt hơn, hãy cho tôi biết.

public void playAudio(String audioFile){ 

    //instance variable of type MediaPlayer 
    _player = null; 
    while(_player == null){ 
     _player = MediaPlayer.create(_context, getResources().getIdentifier(audioFile, "raw", _context.getPackageName())); 
    } 
    _player.start(); 

} 


Cảm ơn.

+0

Tôi gặp vấn đề tương tự trên Droid X. Bạn đã có thể tìm được giải pháp chưa? Tôi tìm thấy một số loại "sửa chữa", nơi tôi muốn gọi '_player.release()' trước khi gọi phương thức 'create' (' release' phải được gọi bên trong một try/catch) – Darcy

+0

+1 Cùng một vấn đề. Tôi muốn chơi vài tệp video và đôi khi MediaPlayer.create return null và tôi không thể phát tệp tiếp theo. –

Trả lời

1

SoundPool (Docs) có thể là điều cần cân nhắc.

+0

Nó thực sự có thể. Tôi đã tìm thấy, mặc dù, trong một số trường hợp, bạn có thể tìm thấy SoundPool một chút thiếu tính năng, vì nó là khá nhằm vào clip rất nhỏ, với vòng đời đơn giản. – torkildr

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