1

Androidフォンのマイクにアクセスして、生データを取得しようとしています(ファイルへの書き込みではありません)。しかし、生データをファイルに書き込んだ後、録音したオーディオを再生できません (Matlab を使用して再生します)。調整が必要なパラメーターがあるか、プロセスに問題があるかどうか疑問に思っていますか? どうもありがとう。

     AudioManager audio_service = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        audio_service.setSpeakerphoneOn(true);
        audio_service.setMode(AudioManager.MODE_IN_CALL);
        audio_service.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);

        int iSampleRate = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_SYSTEM);
        int iAudioBufferSize = AudioRecord.getMinBufferSize(iSampleRate, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT);
         recorder = new AudioRecord(AudioSource.CAMCORDER, iSampleRate, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT, iAudioBufferSize);
         recorder.startRecording();
         bRecording = true;
         recordThread.start();



     public void run()
            {
                    short[] buffer = new short[iAudioBufferSize];
                android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);

            while(!interrupted())
            {
                // Make sure the audiorecorder get the enough data
                ReadFully(buffer, 0, iAudioBufferSize,recorder);                  

                try{                 
                    for (int i = 0; i < buffer.length-1; i++)
                    {                      
                            if(rawAudioWriter1 != null){
                                rawAudioWriter1.append(Short.toString(buffer[i]));
                                rawAudioWriter1.append('\n');                            
                            }                                                                               
                    }
                    if(rawAudioWriter1 !=null){                     
                        rawAudioWriter1.flush();
                    }


                }catch(IOException e){
                    e.printStackTrace();
                }
}

        void readFully(short[] data, int off, int length, AudioRecord mrecorder) {
            int read;
            while (length > 0) {
                read = mrecorder.read(data, off, length);
                length -= read;
                off += read;
            }
        }
4

0 に答える 0