2011-06-05 11 views
11

मैं वर्तमान में एक साधारण गेम विकसित कर रहा हूं और अब संगीत और ध्वनि प्रभाव जोड़ने का समय है। मैंने MediaPlayer का उपयोग करने की कोशिश की, जैसा कि यहां वर्णित है: Android media player bugमीडियाप्लेयर लगभग 5 सेकंड के बाद खेलना बंद कर देता है

हालांकि मुझे एक और समस्या है, MediaPlayer लगभग 5 सेकंड के बाद संगीत बजाना बंद कर दें। यह संभावित कारण क्या है?

+2

यकीन है कि ध्वनि आप खेल रहे हैं 5 सेकंड से अधिक लंबी है, पहले :) –

+0

आप शायद हमें कुछ 'MediaPlayer' संबंधित कोड दिखाएगी, और भी उपयोग 'setOnErrorListener (...)' और 'setOnCompletionListener (...)' यह देखने के लिए कि त्रुटि हो सकती है या प्लेबैक अभी सफलतापूर्वक पूरा हो गया है। – inazaruk

+0

हमें एंड्रॉइड 2.3 से मीडियाप्लेयर के साथ ऑनलाइन स्ट्रीम खेलने के साथ समान समस्याएं थीं। हमारी धारा लगभग 2 मिनट लंबी थी। हमारा निष्कर्ष यह था कि एंड्रॉइड आर कंक्रीट प्रकार स्ट्रीम या वीडियो प्रारूप में यह एक बग था। – ATom

उत्तर

49

मुझे यह समस्या भी थी। शायद मीडियाप्लेयर-ऑब्जेक्ट केवल एक विधि के भीतर मौजूद होने के कारण था।

उदाहरण के लिए:

//ERROR, stops after 5 sec! 
public static void playMusic(int id) 
{ 
    MediaPlayer mediaPlayer = MediaPlayer.create(context, id); 
    mediaPlayer.setLooping(true); 
    mediaPlayer.start(); 
} 

यह सबसे अधिक संभावना है कि कचरा कलेक्टर में आते हैं और MediaPlayer-वस्तु दूर साफ नहीं है।

यह मेरे लिए त्रुटि को ठीक:

//mediaPlayer-object will not we cleaned away since someone holds a reference to it! 
private static MediaPlayer mediaPlayer; 

public static void playMusic(int id) 
{ 
    mediaPlayer = MediaPlayer.create(context, id); 
    mediaPlayer.setLooping(true); 
    mediaPlayer.start(); 
} 
+2

यह इस समस्या का मेरा उदाहरण तय करता है। किंडा नट्स कि MediaPlayer प्लेबैक के दौरान gc'd प्राप्त कर सकते हैं। –

+3

आपने मुझे बचाया !!! – Harry

+1

बहुत दिलचस्प है। कचरा संग्रह कैसे काम करता है यह बताने का शानदार तरीका :) – TastyLemons

संबंधित मुद्दे