试图通过蓝牙录制麦克风输入

时间:2015-06-17 20:10:02

标签: java android android-bluetooth android-file android-audiomanager

我有一个Arduino,它通过蓝牙进行广播,从麦克风输入。

我想连接手机,以便通过蓝牙记录并保存Arduino麦克风的输入。

当我运行以下代码时,我遇到了一些问题。

  1. 我似乎无法找到我保存的文件。

    File file=new File(mFilePath2,"test.txt");
    
  2. 在Logcat上运行Bluetooth_Test()

    时出现以下错误
    ACDB-LOADER   -    Error: ACDB AudProc vol returned = -19  
    
    MediaPlayer   -    Error (1, -1004)
    
  3. 当我运行stop()时,我得到:

    MPEG4Writer   -    Stop() called but track is not started
    
    MediaPlayer-JNI    QCMediaPlayer mediaplayer NOT present
    
    MediaPlayer   -    Should have subtitle controller already set
    
  4. 我不确定发生了什么,我不确定如何弄清楚。

    参考文献:

    代码:

        public void Bluetooth_Test (){
    
            Toast.makeText(getActivity(), "weee", Toast.LENGTH_LONG).show();
    
            maudioManager = (AudioManager) getActivity().getSystemService(getActivity().AUDIO_SERVICE);
            // Switch to headset
            maudioManager.setMode(AudioManager.MODE_IN_CALL); // to use headset's I/O and not phone's
    
            // Start audio I/O operation (in background)
            maudioManager.startBluetoothSco();
    
            mRecorder = new MediaRecorder();
            mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // set source to current mic (should be Bluetooth)
    
            mFilePath = Environment.getExternalStorageDirectory().getAbsolutePath();
            String mFilePath2 = mFilePath;
            mFilePath += "/youraudiofile.mp3";
            File file=new File(mFilePath2,"test.txt");
    
            // Set file extension for the recorded audio file
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            // Set a file path for the recorded audio file
            mRecorder.setOutputFile(mFilePath);
            // Set encoding of the audio
            mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            try {
                mRecorder.prepare();
            }
            catch (IOException e){
                Log.e("Starting mRecorder", "IO Exception");
            }
            // Start recording
            mRecorder.start();
    
        }
    
      public void stop () {
            mRecorder.stop();
            mRecorder.reset();
            mRecorder.release();
            mRecorder = null;
    
            final MediaPlayer mPlayer = new MediaPlayer();
            try {
                mPlayer.setDataSource(mFilePath);
                mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                                              @Override
                                              public void onPrepared(MediaPlayer mp) {
                                              mPlayer.start();            // Start playing audio file
                                              }
                                          });
    
                    // Audio file to be played
                    mPlayer.prepareAsync();
            } catch (IOException e){
                Log.e("Stop Function", "IO Exception");
            }           
        }
    

0 个答案:

没有答案