फ्रीज करता है मैं एंड्रॉइड एप्लिकेशन में रेडियो स्टेशनों को स्ट्रीम करने के लिए cordova-plugin-media
के साथ cordova 6.4.0
का उपयोग कर रहा हूं। दुर्भाग्यवश एक मामला है, जहां आवेदन अब ठीक से प्रतिक्रिया नहीं दे रहा है।कॉर्डोवा मीडिया प्लगइन - स्ट्रीमिंग बंद नहीं करना स्ट्रीमिंग - रिलीज() डिवाइस
मान लें कि उपयोगकर्ता रेडिस्टेशन स्ट्रीम करना चाहता है, लेकिन स्ट्रीम लोड होने पर, वह इसे निरस्त करना चाहता है (उदाहरण के लिए क्योंकि स्ट्रीम डाउन है, या लोड करने में बहुत अधिक समय लग रहा है)।
इस मामले में मैं प्रक्रिया को रद्द करने में सक्षम नहीं हूं!
media = new Media("http://direct.franceinfo.fr/live/franceinfo-midfi.mp3?ID=f9fbk29m84", mediaPlayerSuccess, mediaPlayerFail, mediaPlayerStatus);
media.play();
अब मैं धारा को बफर करने की प्रक्रिया को रद्द करना चाहता हूं, लेकिन मैं सक्षम नहीं हूं। कार्य:
media.pause();
media.stop();
में त्रुटि संदेश फेंक रहे हैं एडीबी लॉग इन करें और MediaPlayer-onError कॉलबैक बुला रहे हैं।
D/AudioPlayer(3362): AudioPlayer Error: pausePlaying() called during invalid state: 1
...
D/AudioPlayer(3362): AudioPlayer Error: stopPlaying() called during invalid state: 1
media.release()
आदेश धारा की लोडिंग बंद हो जाता है! हालांकि, इसे रोकने के बिना स्ट्रीम को छोड़कर, अन्य कारणों से बड़ी समस्याएं होती हैं:
अधिकांश समय सिस्टम बहुत धीमी प्रतिक्रिया देता है और कुछ सेकेंड लटकता है, अगर आप मीडिया-ऑब्जेक्ट पर media.release()
पर कॉल करते हैं। लेकिन यदि आप अक्सर ऐसा करते हैं, तो सिस्टम पूरी तरह से को फ्रीज करता है। मतलब यह अब रिमोट कंट्रोल कमांड accetp नहीं है। एडब-लॉग अभी भी काम कर रहा है, लेकिन इस मामले में कोई त्रुटि नहीं दिखाता है। केवल पावर-बटन अभी भी काम कर रहा है (यह ताले और स्क्रीन को अनलॉक करता है)। इस खराब स्थिति से पुनर्प्राप्त करने का एकमात्र तरीका डिवाइस को रीबूट करना है।
अगर मैं खेल नहीं रहा हूं तो मुझे मीडिया-स्ट्रीम को कैसे रद्द करना है, अभी तक? क्या यह प्लगइन में एक बग है?
संलग्न कोड-स्निपेट है, जिसे मैं मीडिया-स्ट्रीमिंग-तर्क को संभालने के लिए उपयोग करता हूं। ऊपर वर्णित की तरह ... यह मूल रूप से काम करता है, लेकिन यदि आप इसे कई बार कहते हैं, तो यह धीमा हो जाता है या डिवाइस को फ्रीज करता है।
function radioControl(action, media_src){
//media_src is a webradio-streamurl.
if(action == 'play') {
// Initial Play
if(media === null){
mediaCreateObject(media_src);
}
// If we get PLAY but on antoher station
else if(media.src != media_src){
mediaReleaseRessources();
mediaCreateObject(media_src);
}
//interrupt_timer = false;
if(media === null){
mediaCreateObject(media_src);
}
media.play();
}
else if (action === 'pause') {
//If we get "pause", but it didn't even start yet
if(media._duration == -1){
mediaReleaseRessources();
}
else{
media.pause();
}
}
}
function mediaCreateObject(media_src){
media = new Media(media_src, mediaPlayerSuccess, mediaPlayerFail, mediaPlayerStatus);
}
function mediaReleaseRessources(){
media.release();
}
इस आयनिक 1 या 2 या किसी अन्य है? –
कोई ईओण, बस कॉर्डोबा '6.4.0' –
@MichaelB मैं तुम्हें पहले media.stop आह्वान होगा महसूस हो रहा है() और फिर संसाधनों को रिहा करने media.release() कहते हैं। कृपया – Gandhi