छोड़ने का कारण बन रहा है। मैं मीडियाप्लेयर क्लास द्वारा खेले गए ट्रैक की लंबाई और ट्रैक के भीतर खोज करने के लिए एक सेकरबार का उपयोग करने की कोशिश कर रहा हूं।एंड्रॉइड सीकबार सेट प्रोग्रेस मेरे मीडियाप्लेयर को
ट्रैक के भीतर की तलाश अच्छी तरह से काम करता है। हालांकि, ट्रैक चल रहा है, जबकि सेट प्रोग्रेस का उपयोग कर प्रगति मूल्य को अद्यतन करना थोड़ा सा कारण लगता है।
ऑनक्रेट विधि में मैं एक लूप के साथ एक थ्रेड बनाता हूं जो वर्तमान ट्रैक के लिए सेकरबार के प्रगति मूल्य को अद्यतन करता है। जब ट्रैक बदल जाता है तो यह पाश रीसेट हो जाता है।
private void createProgressThread() {
_progressUpdater = new Runnable() {
@Override
public void run() {
//Exitting is set on destroy
while(!_exitting) {
_resetProgress = false;
if(_player.isPlaying()) {
try
{
int current = 0;
int total = _player.getDuration();
progressBar.setMax(total);
progressBar.setIndeterminate(false);
while(_player!=null && current<total && !_resetProgress){
try {
Thread.sleep(1000); //Update once per second
current = _player.getCurrentPosition();
//Removing this line, the track plays normally.
progressBar.setProgress(current);
} catch (InterruptedException e) {
} catch (Exception e){
}
}
}
catch(Exception e)
{
//Don't want this thread to intefere with the rest of the app.
}
}
}
}
};
Thread thread = new Thread(_progressUpdater);
thread.start();
}
आदर्श रूप से मैं धागे का उपयोग नहीं करता क्योंकि मैं समझता हूं कि इसका नुकसान है। कृपया निगलने के अपवाद को क्षमा करें - यूआई घटनाओं के जवाब में सभी मीडियाप्लेयर राज्यों की जांच करना मुश्किल है। हालांकि, मेरी असली समस्या यह है कि संगीत छोड़ रहा है।
क्या कोई भी प्रगति को अपडेट करने का एक वैकल्पिक तरीका सुझा सकता है और समझा सकता है कि सेट प्रोग्रेस को कॉल क्यों एक अलग धागे के उपयोग के साथ ट्रैक को छोड़ने का कारण बन रहा है?
अग्रिम धन्यवाद।
स्पॉट ऑन। धन्यवाद। –
ब्रिलियंट, उन्माद असहाय डीबगिंग के एक दिन के बाद इस मुद्दे को मिला! :) धन्यवाद। – Soham