2012-11-27 9 views
11

मुझे पता है कि कुछ डिवाइस हेडफ़ोन बंदरगाह (शायद उनमें से सभी? यहां कोई संदर्भ अच्छा होगा) स्टीरियो ध्वनि और माइक्रोफ़ोन के लिए 3 चैनल हैं। तो मैं सोच रहा था कि इन उपकरणों पर this pedal जैसे कुछ का पता लगाना संभव है या नहीं।ऑडियो जैक के माध्यम से इनपुट डेटा का पता लगाने के लिए कैसे?

यदि यह संभव है, तो audio recorder का उपयोग करना पर्याप्त होगा? मैं यहां एक ऐप के लिए संभावनाओं का अध्ययन कर रहा हूं, और यदि संभव हो तो यह वादा करता है।

धन्यवाद

संपादित

मैं इसके बारे में अधिक खोज रहा था और अगर पेडल बटन के साथ उन लोगों के हेडसेट के रूप में एक ही प्रभाव होता है मैं सोच रहा था। It's deadly easy to override their effects, मैंने एक साधारण ऐप बनाया जो इसे करता है और अब मैं अपने पेडल को आजमाने की प्रतीक्षा कर रहा हूं। इसके बारे में कोई विचार?

अद्यतन

मैं सिर्फ पेडल में यह कोशिश की और यह काम नहीं करता। हालांकि हम एक संगीत ऐप को रोकने के लिए पेडल का उपयोग करने में कामयाब रहे। हालांकि डिवाइस साइनोजन चला रहा था। वॉयस रिकॉर्डर को भी कुंजी प्रेस पर कुछ भी पता नहीं लगा। इसे कैसे पहचानें इस पर सुझावों की आवश्यकता है :)।

अद्यतन

के रूप में इनाम समाप्त होने को है, एक छोटी सी अद्यतन। @ निक। द्वारा प्रदान किया गया अंतिम लिंक कुछ सहायक जानकारी मिली लेकिन मैं अभी भी पेडल का पता लगाने के लिए नमूना बनाने में सक्षम नहीं हूं। इसलिए मैंने शीर्षक प्रश्न पर एक छोटा सा परिवर्तन किया, और उस दिशा में किसी भी मार्गदर्शन की बहुत सराहना की जाएगी!

+0

दिलचस्प प्रश्न (मेरे पास कोई सुराग नहीं है लेकिन मैं खुद को जानना चाहता हूं)। मैं एक गेराज बैंड स्टाइल ऐप देख सकता था जो मैन्युअल इनपुट जैसे टर्न टेबल या अन्य इलेक्ट्रॉनिक इनपुट (यंत्र) की अनुमति देगा। –

+0

ध्यान में रखते हुए कि [वर्ग पाठक] (https://squareup.com/reader) ऑडियो पोर्ट का उपयोग करने पर आधारित है, मुझे लगता है कि आप जो भी मांग रहे हैं वह भी संभव है। –

+0

उस पेडल में एक potentiometer अंदर और कुछ और नहीं लगता है। कनेक्टर एक 3-पिन जैक है (तस्वीर पर ज़ूम का उपयोग करें) ताकि संभवतः जैक के ग्राउंड पिन से जुड़े बर्तन का एक छोर हो, और इस प्रकार दूसरे छोर और दूसरे दो से जुड़े बर्तन के स्लाइडर पिंस। Http://pinoutsguide.com/CellularPhones-P-W/samsung_galaxy_headset_pinout.shtml पर सैमसंग जैक पिनआउट। तो पॉट बाएं और दाएं ऑडियो आउटपुट से जुड़ा हुआ है, माइक नहीं। वादा नहीं कर रहा हूँ। – emrys57

उत्तर

3

यह है कि अगर यह बिना काम करेंगे स्पष्ट नहीं है मेरे हाथों में वास्तविक हार्डवेयर, लेकिन ... सॉकेट में जैक को हर तरह से प्लग न करें। जैक की नोक को इस आरेख के पिन 2, बाएं ऑडियो आउट से कनेक्ट करना चाहिए: http://pinoutsguide.com/CellularPhones-P-W/samsung_galaxy_headset_pinout.shtml और अंगूठी पिन 3, माइक्रोफ़ोन से कनेक्ट होनी चाहिए। यदि आप जैक को सभी तरह से धक्का देते हैं, तो ग्राउंड पिन जैक माइक्रोफोन इनपुट को शॉर्ट्स करता है और आपको कुछ भी पता नहीं चल जाएगा - https://en.wikipedia.org/wiki/File:Photo-audiojacks.jpg पर चित्र दिखाते हैं कि कनेक्शन कैसे मिलेंगे।

वाम चैनल से कुछ ऑडियो चलाएं, इसे माइक्रो चैनल पर रिकॉर्ड करें, और आयाम को मापें। यह हो सकता है - अगर यह सब ठीक हो गया है - आपको पेडल स्थिति बताएं। यदि पोटेंटियोमीटर का बहुत दूर जैक की अंगूठी से जुड़ा हुआ है, तो यह काम नहीं करेगा।

यह सब हीथ रॉबिन्सन बल्कि लगता है। आप एक इनलाइन 3-पिन मादा जैक सॉकेट और एक 4-पिन नर जैक प्लग खरीद सकते हैं और जो भी पिनआउट आपको चाहिए उसे पाने के लिए दोनों को एक साथ तार कर सकते हैं। कोई इलेक्ट्रॉनिक्स नहीं; बस कनेक्टर और तार के बिट्स! या इस तरह के केबल का उपयोग करें: http://www.ebay.co.uk/itm/1mt-3-5mm-4-Pin-Jack-Male-Plug-4-Pole-Jack-female-Socket-Extension-Lead-Cable-/251172651017?pt=UK_Computing_Sound_Vision_Audio_Cables_Adapters&hash=item3a7b0e8009&_uhb=1 और एक तेज चाकू और कुछ चिपचिपापन।

दूसरी समस्या तब आएगी जब जैक जैक पर ऑडियो भेजने से इंकार कर देता है जब जैक पूरी तरह से घर नहीं प्लग होता है - उस सॉकेट में अतिरिक्त संपर्क होता है जो यांत्रिक रूप से पता लगाता है। लेकिन अगर आप 3-पिन 4-पिन एडाप्टर के लिए बनाते हैं तो यह काम करेगा।

या, अपने (चमकीले नए) अभिव्यक्ति पेडल से 3.5 मिमी जैक काट लें। अपने चारों ओर झूठ बोलने वाले उन टूटे हुए फोन हेडसेट में से एक को 4-पिन कनेक्टर के साथ बदलें।

1

यहां संभावना के दो संभावित मार्ग हैं।

  • एक हेडसेट (या शायद अधिक विशेष रूप से माइक्रोफोन) उपस्थिति का पता लगाने सर्किट का उपयोग करने, और उचित एपीआई के माध्यम से है कि स्थिति को पढ़ने होगा। यह काफी सरल होगा (केवल यह पता लगाना होगा कि वास्तविक हेडसेट की कौन सी संपत्ति माप रही है)। हालांकि, एक अच्छा मौका है कि प्रतिक्रिया काफी धीमी हो सकती है, क्योंकि फोन कुछ ऑडियो कॉन्फ़िगरेशन परिवर्तनों के माध्यम से जाने की संभावना है और यह तब तक नहीं करना चाहेंगे जब तक यह "निश्चित" नहीं है कि हेडसेट कनेक्ट या डिस्कनेक्ट हो गया है। इसके अलावा सबसे सरल गैर-माइक्रोफोन हेडसेट पहचान जैक में एक यांत्रिक तंत्र के माध्यम से हो सकती है जो कि मॉडल में इलेक्ट्रिक रूप से कार्य करना मुश्किल हो सकता है।

  • माइक्रोफोन इनपुट में कुछ ध्वनि जोड़ने और सॉफ्टवेयर में इसका पता लगाने के लिए एक और जटिल विचार होगा। हालांकि, इसे एक सिग्नलिंग सिग्नल होना होगा, क्योंकि माइक्रोफ़ोन बैंडविड्थ आमतौर पर डीसी तक नहीं है। यदि आप केवल एक स्थिर वोल्टेज लागू करते हैं, तो आपको बदलते समय "क्लिक" क्षणिक मिलेगा, लेकिन अन्यथा नहीं। एक ऑडियो फ्रीक्वेंसी सिग्नल इंजेक्शन के लिए एक पावर स्रोत की आवश्यकता होगी - सावधानीपूर्वक डिज़ाइन के साथ आप माइक्रोफोन बायस सप्लाई से एक छोटी ऑसीलेटर चलाने के लिए पर्याप्त पावर चोरी कर सकते हैं। लेकिन संभवतया स्पीकर पर सॉफ़्टवेयर आउटपुट ऑडियो आउटपुट होना आसान होगा, और अपने पेडल स्विच को इसे एक छोटे संधारित्र के माध्यम से माइक्रोफ़ोन में वापस ले लें।

+0

अधिक सटीक होने के लिए, मुझे केवल एक आकाशगंगा टैब पर काम करने की आवश्यकता है। मैं ऑडियो रिकॉर्डर वर्ग के साथ माइक्रोफोन उपयोग का पता लगा सकता हूं। मुझे कुछ भी सटीक की आवश्यकता नहीं है। एक सरल टैप किया गया है या काम नहीं किया गया है। समस्या यह है कि मैं अभी तक उन पेडल में से एक पर अपना हाथ नहीं ले सकता। – caiocpricci2

+0

और जब आप इसे सेट करते हैं, तो मैं किसी भी सुझाव की सराहना करता हूं, यह पता लगाने के लिए कि असली हेडसेट के कौन से गुणों को मापा जा रहा है। मुझे पता नहीं है कि परीक्षण के लिए पेडल के बिना इसे कैसे ढूंढें। – caiocpricci2

+0

आप इसे इलेक्ट्रॉनिक्स.स्टैकएक्सchange.com पर बेहतर पोस्ट कर सकते हैं। यह चर्चा भी देखें http://electronics.stackexchange.com/questions/20731/is-there-any-way-to-feed-a-signal-line-in-into-a- मोबाइल-phone। एक पुश बटन स्विच के साथ एक सरल सर्किट बनाना आसान होगा जिसे आप अवधारणा के सबूत के रूप में उपयोग कर सकते हैं। – Simon

2

आपके अंतिम अपडेट के अनुसार, ऐसा लगता है कि पेडल हाथों से मुक्त हेडसेट पर बटन की तरह प्रतिक्रिया करता है। तो कहने के लिए, संगीत, पिकअप/एक कॉल को लटकाएं, रोकें और छोड़ें। यदि एपीआई की मूल बातें आपको इसे पकड़ने का कोई तरीका नहीं देती हैं (जो मुझे संदेह है) तो आप एनडीके पर जा सकते हैं और देख सकते हैं कि इसे मूल स्तर से पकड़ लिया जा सकता है या नहीं।

मैं इसे ऊपर देखा और सोचा कि यह आप अपने रास्ता खोजने में मदद कर सकता है:

कभी पता है ...

+0

यह विपरीत है, यह मेरे ओवरराइड कुंजी पहचान पर प्रतिक्रिया नहीं करता है। मैं पूरी तरह से एनडीके भूल गया हूँ। मैं आज रात इसे देख लूँगा! सलाह के लिये धन्यवाद! – caiocpricci2

1

अंततः मैं पेडल इनपुट पढ़ने में कामयाब रहा। @ emrys57 सही है, जैक को 4-पिन कनेक्टर के साथ बदलकर, एक हुक बटन के साथ उसी तरह माइक्रोफ़ोन इनपुट को ट्रिगर करता है। हालांकि कभी-कभी ऐसा लगता है कि वॉल्यूम अप और वॉल्यूम डाउन कुंजियां भी ट्रिगर होती हैं। मुझे लगता है कि यह एक चाकू और टेप के साथ 4-पिन जैक को प्रतिस्थापित करने से संबंधित है।

यह केपअप पर ओवरराइड करना काफी आसान था। सावधान रहें कि आपको डिफ़ॉल्ट व्यवहार को रोकने के लिए केडडाउन पर ओवरराइड करना होगा:

@Override 
public boolean onKeyDown(int keyCode,KeyEvent event){ 
    int action = event.getAction(); 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP 
      || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN 
      || keyCode == KeyEvent.KEYCODE_HEADSETHOOK) { 

     if (action == KeyEvent.ACTION_UP) { 
      Log.d(TAG, "action_up"); 
      clickStart(null); 
      return true; 
     } else if (action == KeyEvent.ACTION_DOWN) { 
      Log.d(TAG, "action_down"); 
      return true; 
     } else { 
      Log.d(TAG, "action:" + action); 
      return true; 
     } 
    } 
    return false; 
} 

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    int action = event.getAction(); 
    Log.d(TAG, "onKeyDown!"); 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP 
      || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN 
      || keyCode == KeyEvent.KEYCODE_HEADSETHOOK) { 

     if (action == KeyEvent.ACTION_UP) { 
      Log.d(TAG, "action_up"); 
      clickStart(null); 
      return true; 
     } else if (action == KeyEvent.ACTION_DOWN) { 
      Log.d(TAG, "action_down"); 
      return false; 
     } else { 
      Log.d(TAG, "action:" + action); 
      return true; 
     } 
    } 
    if (keyCode == KeyEvent.KEYCODE_BACK) {   
     finish(); 
     return true; 
    } 
    Log.d(TAG, "returning false"); 
    return false; 
} 
संबंधित मुद्दे