2016-08-29 8 views
5

मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरा डिवाइस सही ढंग से ऑडियो रिकॉर्ड कर रहा है (रिकॉर्ड किए गए ऑडियो की मात्रा बहुत कम नहीं है और वास्तव में रिकॉर्ड की गई फ़ाइल में ध्वनि है)। जिस तरह से मैं यह कर की कोशिश की है:एंड्रॉइड - ध्वनि रिकॉर्ड करें और ध्वनि मात्रा की जांच करें

शुरू रिकॉर्डिंग -> खेलने ध्वनि -> बंद रिकॉर्डिंग -> मिल फ़ाइल दर्ज की अधिकतम मात्रा

कोड मैं रिकॉर्ड करने के लिए इस्तेमाल किया ध्वनि:

public void playSound() { 
     File myDataPath = new File(getActivity().getFilesDir().getAbsolutePath() 
       + File.separator + ".CheckAudio"); 
     if (!myDataPath.exists()) 
      myDataPath.mkdirs(); 
     recordFile = myDataPath + File.separator + "Recording_" + new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date()) + ".mp3"; 
     am.setStreamVolume(AudioManager.STREAM_RING, am.getStreamMaxVolume(AudioManager.STREAM_RING), 0); 
     am.setStreamVolume(AudioManager.STREAM_NOTIFICATION, am.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION), 0); 
     Uri defaultRingtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     try { 
      md = new MediaRecorder(); 
      md.setAudioSource(MediaRecorder.AudioSource.MIC); 
      md.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
      md.setOutputFile(recordFile); 
      md.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
      md.prepare(); 
      md.start(); 
     } catch (IllegalStateException | IOException e) { 
      recording = false; 
      removeItem("Unable to record audio, please try again."); // (Show toast) 
      return; 
     } 
     mediaPlayer = new MediaPlayer(); 
     try { 
      mediaPlayer.setDataSource(getActivity(), defaultRingtoneUri); 
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); 
      mediaPlayer.prepare(); 
      mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
       @Override 
       public void onCompletion(MediaPlayer mp) { 
        md.stop(); 
        md.release(); 
        mediaPlayer.release(); 
        mediaPlayer = null; 
        // get recordfile volume 
       } 
      }); 
      mediaPlayer.start(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      removeItem("Unable to play audio"); 
      sound = false; 
     } 
    } 

हालांकि, मुझे यह नहीं पता कि एमपी 3 फ़ाइल का विश्लेषण कैसे किया जाए और जांचें कि यह खाली नहीं है (ध्वनि से), क्या कोई पुस्तकालय या कोई अन्य तरीका है?

मुझे आशा है कि आप लोग समझेंगे कि मैं क्या हासिल करने की कोशिश कर रहा हूं क्योंकि मेरी अंग्रेजी बहुत खराब है, धन्यवाद।

संपादित करें: (कुछ अधिक explaination) ध्वनि आप खेलते हैं (रिंगटोन या कुछ और), जबकि माइक्रोफोन से ध्वनि रिकॉर्डिंग, डेसीबल दर्ज की गई लगभग 90 डेसीबल होना चाहिए। जिसका अर्थ है ध्वनि बजाना और माइक्रोफ़ोन भी, लेकिन अगर डेसिबल 30 के आसपास रिकॉर्ड किया गया है तो इसका मतलब है कि माइक्रोफ़ोन काम कर रहा है, और ध्वनि नहीं खेल रहा है, अगर डेसिबल शून्य के आसपास हैं तो माइक्रोफ़ोन काम नहीं कर रहा है।

+0

सबसे पहले आप बनाया गया था कि फ़ाइल मिल सकती है? क्या आप इसे अपने से अलग एप्लिकेशन के साथ खोल सकते हैं और देख सकते हैं कि ध्वनि वास्तव में दर्ज की गई है या नहीं? –

+0

@ जॉर्जोड मैं इसे उसी एप्लिकेशन में करना चाहता हूं, हालांकि, पृष्ठभूमि में ऐसा करना जबकि अन्य चीजें होती हैं, एक विकल्प है। मैंने जो कुछ ढूंढना चाहता हूं उसके बारे में कुछ और जानकारी जोड़ा (उत्तर के नीचे)। धन्यवाद। – DAVIDBALAS1

+0

मुझे पता है कि आप एक ही एप्लिकेशन से ऐसा करना चाहते हैं, लेकिन बस इसे एक पल के लिए छोड़ दें, फ़ाइल को अपने डिवाइस पर मौजूद किसी अन्य एप्लिकेशन से खोलने का प्रयास करें और देखें कि वास्तव में यह कुछ भी दर्ज किया गया है या नहीं। आइए सत्यापित करें कि रिकॉर्डिंग कार्यक्षमता सही ढंग से कार्यान्वित की जा रही है या नहीं। –

उत्तर

1

यदि रिकॉर्डिंग ध्वनि बहुत कम या बहुत अधिक हो रही है तो आप वास्तविक समय को देखने के लिए विज़ुअलाइज़र का उपयोग कर सकते हैं।

मैंने एक परियोजना बनाई है जो बार ग्राफ के माध्यम से रिकॉर्डिंग ध्वनि शक्ति को विज़ुअलाइज़ करता है। उच्च बार बार बार दर्ज की गई ध्वनि बार कम डेसिबल को कम करती है।

इस प्रोजेक्ट में इनएप प्लेयर भी है जो उपयोगकर्ता को अपने सभी रिकॉर्डिंग खेलने की अनुमति देता है। इनबिल्ट प्लेयर प्लेबैक ध्वनि डेटा भी कल्पना करता है।

मैं यह सुझाव दे रहा हूं क्योंकि मैंने सोचा था कि आप में रिकॉर्डिंग शुरू करने की कोशिश कर रहे हैं -> ध्वनि चलाएं -> रिकॉर्डिंग रोकें -> फ़ाइल को अधिकतम मात्रा दर्ज करें।

प्रत्येक बार अधिकतम मात्रा प्राप्त करने के बजाय आप रिकॉर्डर पर नजर रखने के लिए विज़ुअलाइज़र पर भरोसा कर सकते हैं यदि रिकॉर्डिंग फ़ाइल स्वीकार्य डेसीबल से ऊपर दर्ज की जा रही है।

आप GitHub पर स्रोत कोड प्राप्त कर सकते हैं

सभी की

https://github.com/hiteshsahu/Android-Audio-Recorder-Visualization-Master

+0

अच्छा, मुझे लगता है कि मैं इस पर भरोसा कर सकता हूं। :) धन्यवाद। – DAVIDBALAS1

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