首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我只能从录音输出中得到零?

为什么我只能从录音输出中得到零?
EN

Stack Overflow用户
提问于 2016-06-30 20:59:09
回答 1查看 1.2K关注 0票数 2

我想用AudioTrack播放声音,同时用AudioRecord录制。但除了零我什么也得不到。为什么?

我试着从byte[]缓冲区读取数据,得到的只有零。这是我的代码:

代码语言:javascript
运行
复制
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Time;
import java.util.Timer;
import java.util.TimerTask;

import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;

public class RecordThread implements Runnable {

private static final int Encording = AudioFormat.ENCODING_PCM_16BIT; //Data size for each frame = 16 bytes
private static final int Sample_rate = 8000;                         //Sample rate = 8000 HZ
private static final int Channel = AudioFormat.CHANNEL_IN_MONO;      //Set as single track
public static final int Buffersize = AudioRecord.getMinBufferSize(Sample_rate, Channel, Encording); //Buffer size
@Override
public void run() {
    // TODO Auto-generated method stub

    AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,Sample_rate, Channel, Encording, Buffersize);
    while(MessageUsed.RecordPermit){
    try {
        FileOutputStream ops = new FileOutputStream(TestoOFDMMain.file2);
        BufferedOutputStream bos = new BufferedOutputStream(ops);
        DataOutputStream dos = new DataOutputStream(bos);

        byte[] buffer = new byte[Buffersize]; 


            audioRecord.startRecording();   //Start Recording
            int bufferReadResult = audioRecord.read(buffer, 0, buffer.length);  //Read Array size
            MessageUsed.RecordStop = false;
            /*Write Data to file*/
            for(int i=0;i<bufferReadResult;i++){
                dos.write(buffer[i]);
            System.out.println(buffer[i]);  
                if(MessageUsed.ProcessPermit == true){
                        break;
                    }
                }

        audioRecord.stop();
        dos.close();
        MessageUsed.RecordStop = true;
        Thread.sleep(300);
        MessageUsed.ProcessStart = true;

        Thread.sleep(900);

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-30 23:43:19

我很快就会认为您的System.out.println()语句不允许结果出现。这是一个基本的java表达式,而不是Android。您所看到的可能是您正在查看的任何字段的默认值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38133155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档