Sunday 15 January 2012

objective c - MPNowPlayingInfoCenter info doesn't work via USB accessory -


मेरे पास एक ऐसा ऐप है जो AVPlayer (वास्तव में AVQueuePlayer ) का उपयोग करता है ऑडियो बजाना यह MPNowPlayingInfoCenter जानकारी सेट करता है, दूरस्थ कोडों के प्रबंधन के लिए MPRemoteCommandCenter का उपयोग करता है, और पृष्ठभूमि ऑडियो को अनुमति देता है यह सभी कार्यक्षमता नियंत्रण केंद्र और लॉक स्क्रीन के माध्यम से ठीक से काम करती है। जब मैं अपना फोन मेरी कार में लाता हूं तो यह मेरी कार के ब्लूटूथ इंटरफेस के साथ ठीक से काम करता है हालांकि, अगर मैं सीधे अपने कार के स्टीरियो में आईफोन 6 बिजली बंदरगाह के माध्यम से अपने फोन को प्लग करता हूं, तो यह बुरी तरह से टूट गया है। यह वास्तव में ऑडियो खेलता है, लेकिन ...

(1) अब मेरी किसी भी गेम की जानकारी मेरी कार के डैशबोर्ड पर प्रदर्शित नहीं होती है (2) मेरी कार का स्टीरियो जब भी मैं कोशिश करता हूं तो कनेक्शन त्रुटियों का एक गुच्छा डाल देता है कुछ भी करें।

मेरे फोन पर अन्य ऐप्स में यह समस्या नहीं है, इसलिए मुझे नहीं लगता कि यह मेरे स्टीरियो की गलती है मैं आधिकारिक ऐप बिजली केबलों का उपयोग कर रहा हूं, इसलिए यह संबंधित नहीं है।

मैंने अपने ऐप्पल टीवी के माध्यम से एयरप्ले के साथ अपने ऐप की कोशिश की और यह इसी तरह से विलक्षण भी था मैंने देखा है कि AVPlayer को अनुमति देता है, एन्क्सिनेटल प्लेबैक नामक एक महत्वपूर्ण संपत्ति है, जिसे नहीं पर सेट करना पड़ता है, अगर आप केवल ऑडियो खेल रहे हैं उस संपत्ति को NO पर सेट करने के बाद, एप्पल टीवी के माध्यम से एयरप्ले ठीक से काम करता है मैंने यह माना था कि यह मेरी ऐसी कारिका थी जो मेरी कार को प्रभावित कर रही थी, लेकिन वह ऐसा नहीं लगता है। को नहीं पर सेट की गई अनुमति के साथ भी, मेरी कार पर यूएसबी कनेक्शन के माध्यम से ऑडियो बजाना अभी भी खराब है।

ऐसा लगता है कि यह कैसे गलत है या तो (ए) AVAudio सत्र , या (बी) AVPlayer कॉन्फ़िगर किया गया है।

मेरा ऑडियो प्लेयर कॉन्फ़िगरेशन बहुत आसान है ...

<पूर्व> आत्म। आडियो प्रश्न = [AVQueuePlayer queuePlayerWithItems: शून्य]; Self.audioQueue.allowsExternalPlayback = नहीं; [स्व। आडियो क्यूई एडऑबर्वर: स्वयं केकेपाथ के लिए: @ "स्थिति" विकल्प: 0 संदर्भ: केएवीप्लेयरस्टैटस कंटेंक्स]; [Self.audioQueue addObserver: स्वयं केकेपाथ के लिए: @ "दर" विकल्प: 0 संदर्भ: केएवीप्लेयरआरएटीकॉन्टेक्स]; [Self.audioQueue addObserver: के लिए selfKeyPath: @ "त्रुटि" विकल्प: 0 संदर्भ: kAVPlayerErrorContext]; [Self.audioQueue addObserver: के लिए स्वयं केपैथ: @ "वर्तमान इटैम" विकल्प: (एनएसकेएवल्यूऑबसेबलऑप्शनऑल्ड | एनएसकेएवेवल्यूउज़नओवेशनओवेशननई) संदर्भ: केएवीप्लेयरकूरेंटइटम कॉन्टेक्स];

... मेरे ऑडियो सत्र के रूप में ...

<पूर्व> AVAudio सत्र * ऑडियो सत्र = [एवाडियो शोशन साझाकरण]; NSError * त्रुटि; [ऑडियो सत्र सेटअक्टिव: हाँ त्रुटि: & amp; त्रुटि]; // त्रुटि संभाल कोड [ऑडियो सत्र चालू करें श्रेणी: AVAudio सत्र श्रेणी प्लेबैक त्रुटि: & amp; त्रुटि]; // त्रुटि संभाल कोड // ऑडियो सत्र अधिसूचना NSNotificationCenter * defaultCenter = [NSNotificationCenter defaultCenter]; [DefaultCenter addObserver: स्वयं चयनकर्ता: @ सिलेक्टर (ऑडियोसेशन इंटररेशन नोटिफिकेशन :) नाम: एवीएडियओसेशन इंटररक्शननोटेशन ऑब्जेक्ट: ऑडियोसेशन]; [DefaultCenter addObserver: स्वयं चयनकर्ता: @ सिलेक्टर (ऑडियोसेशनरआउट चेन नोटिफिकेशन :) नाम: एवीएडियोसेशनरआउट चेंज नोटिफिकेशन ऑब्जेक्ट: ऑडियोसशन]; [DefaultCenter addObserver: स्वयं चयनकर्ता: @ सिलेक्टर (ऑडियोसेशन मीडियासर्विसेज रीयरसेट नोटिफिकेशन) नाम: एविडियो सत्र मीडिया सेवाऐसे रीसेट नोटिफिकेशन ऑब्जेक्ट: ऑडियो सत्र];

क्या अन्य गुण हैं जिन्हें इस उपयोग के मामले को संभाल करने की आवश्यकता है? यहां क्या हो रहा है इसे डीबग करने के लिए मैं क्या कर सकता हूं? यह मुझे मिला है।

यहां खेलने के मुद्दे पर 2 मुद्दे थे ...

  1. मैं MPNowPlayingInfoPropertyPlaybackQueueIndex उसी तरह से स्थापित कर रहा था जिस तरह से मैं MPMediaItemPropertyAlbumTrackCount सेटिंग कर रहा था। प्रलेखन को देखने के बाद, मुझे एहसास हुआ कि MPNowPlayingInfoPropertyPlaybackQueueIndex शून्य-आधारित है, और मैं हमेशा क्यूई सूचकांक 1 और कतार संख्या 1 पर सेट कर रहा था। यह कार स्टीरियो को किसी भी सूचना को प्रदर्शित नहीं करने का कारण था ।

  2. AVPlayer के साथ एक ट्रैक खेलने के लिए, आपको केवल 0 के अलावा किसी अन्य चीज़ पर दर निर्धारित करने की आवश्यकता है। मैंने देखा कि मेरे पास एक अनावश्यक है कॉल करने के लिए [audioQueue play] मेरे प्लेबैक दर में दर निर्धारित करने से पहले मैंने इसे चलाने के लिए अनावश्यक कॉल हटा दिया, और यह मेरी अन्य समस्याओं को तय किया कुछ कारणों से, इस विराम के बटन को दबाए जाने के बाद, उस कॉल पर कार स्टीरियो के तुरंत प्रभाव से एक प्ले कमांड भेज दिया गया था।


No comments:

Post a Comment