2012-08-09 12 views
12

मुझे एंड्रॉइड के मीडियाप्लेयर के साथ समस्याएं आ रही हैं। ऐसा लगता है कि इसमें महत्वपूर्ण कार्यक्षमता गुम है, मुख्य रूप से मीडियाप्लेयर की वर्तमान स्थिति प्राप्त करने या यह तैयार करने के लिए कि यह तैयार है या नहीं। मुझे पता है कि तैयार श्रोता पर है, लेकिन मीडियाप्लेयर गतिविधि से अधिक समय तक चलता है, इसलिए जब प्लेइंग गतिविधि फिर से शुरू हो जाती है, तो मौजूदा खिलाड़ी स्थिति प्राप्त करना अच्छा होगा, चाहे वह मीडिया लोड करने की कोशिश कर रहा हो या नहीं, मीडिया लोड हो रहा है या नहीं। क्या मुझे कुछ याद आ रही है, या क्या मुझे खुद को खिलाड़ी राज्यों का ट्रैक रखना है?एंड्रॉइड मीडिया प्लेयर - क्या कोई "isPrepared()" या "getStatus()" विधि है?

अन्य कार्यक्षमता जो अच्छी होगी, प्लेस्टेट चेंज() - मुझे वर्तमान में ट्रैक प्ले स्टेटस को मैन्युअल रूप से रखना होगा। क्या मैं इसे गलत कर रहा हूँ?

उत्तर

11

आशा है कि उत्तर के लिए बहुत देर हो चुकी है। MediaPlayer कक्षा में ऐसी कोई चीज़ नहीं है जो एक हैप्रिपर्ड() या getStatus() विधि है, और आपको अपने राज्य का ट्रैक रखना होगा। हालांकि, यह मुश्किल नहीं है।

मीडियाप्लेयर क्लास में एक अच्छा राज्य आरेख है जो वास्तव में मदद करता है। आपको उस आरेख के आधार पर अपनी सेवा लागू करनी चाहिए। साथ ही, यदि आप हमेशा एक ही धागे से MediaPlayer ऑब्जेक्ट को नियंत्रित करते हैं, तो अपने राज्य का ट्रैक रखना आसान है, इसलिए मैं आपको ऐसा करने की सलाह देता हूं। ReadyAsync() विधि एकमात्र एसिंक्रोनस विधि है जिसे आपको ख्याल रखना है, लेकिन आप एक बूलियन रख सकते हैं जो इंगित करता है कि खिलाड़ी तैयार किया जा रहा है, जो तैयार किए जाने तक 'सत्य' होगा 'एपिनक() कॉल पर निर्भर() है बुलाया। वैसे भी, आप हमेशा एरर पर लागू कर सकते हैं और क्रैश से बचने के लिए IllegalStateException को पकड़ सकते हैं यदि आप गलती से अवैध स्थिति से किसी भी विधि को कॉल करते हैं।

फिर भी, media playback guide ने मुझे बहुत मदद की।

+8

इसे स्वीकृत उत्तर के रूप में चिह्नित करना। दुखद हकीकत यह है कि मीडिया प्लेबैक/खपत के लिए एंड्रॉइड वास्तव में कमी कर रहा है और यहां तक ​​कि मूलभूत कार्यक्षमता जैसे राज्य पुनर्प्राप्ति गायब है। MediaPlayer ऑब्जेक्ट के आस-पास एक रैपर लिखने और अपने आप को स्टोर करने के लिए इसके आस-पास का सबसे अच्छा तरीका है। – StackOverflowed

+5

बस इस समस्या में खुद भाग गया। इस तरह की हास्यास्पद निगरानी ने वर्तमान स्थिति के प्रति अपने तरीके कितने संवेदनशील हैं। –

7

मैं एक समस्या का निवारण करने के डिबगिंग जबकि स्थिति देखने के लिए की जरूरत है, तो मैं बस कहीं के बाद मैं MediaPlayer तैयार किया गया था पता था कि यह कोड रखा:

try { 
    this.audioPlayer.prepare(); 
} catch (Exception e) { 
} 

"ई की तरह कंसोल के लिए एक त्रुटि प्रिंट यही कारण है कि/मीडियाप्लेयर: तैयार एसिंक राज्य 32 में बुलाया गया। "

अब अगर मैं केवल एक जगह ढूंढ सकता हूं जहां सभी स्टेटस कोड सूचीबद्ध हैं ...

+0

मैं सोच रहा था कि क्या आप स्टेटस कोड सूची जानते हैं। :) – Talha

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