android AudioRecord录音时调节录音声音的大小

package ycq.testspeek;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;


import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.AsyncTask;
import android.util.Log;

public class RecordTask extends AsyncTask<Void, Integer, Void>{

	private boolean isRecording=true;
	private String ip_add;
	private int port;
	private OutputStream out_audio;
	private Socket socket_audio;
	private int frequence = 8000; // 录制频率,单位hz.这里的值注意了,写的不好,可能实例化AudioRecord对象的时候,会出错。我开始写成11025就不行。这取决于硬件设备
	private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;
	private int audioEncoding = AudioFormat.ENCODING_PCM_16BIT; // AudioFormat.ENCODING_PCM_16BIT;
	private Video_instruction video_pack = new Video_instruction();
	private int flg=1;
	private AudioRecord record;
	/**
	 * @param ip_add --远程设备ip
	 * @param port --远程设备端口
	 * */
	public RecordTask(String ip_add,int port)
	{
		this.ip_add=ip_add;
		this.port=port;
	}
	/**
	 * @param flg --对讲切换 1表示讲话,0表示听话
	 * */
	public void setFlg(int flg)
	{
		this.flg=flg;
	}

	private void connectionVideo()
	{
		try {
			InetAddress add = InetAddress.getByName(ip_add);  
			socket_audio = new Socket(add, port);
			socket_audio.setTcpNoDelay(false);
			socket_audio.setReceiveBufferSize(10240);
			out_audio = socket_audio.getOutputStream();
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}  
	}
	/**
	 * 关闭通话
	 * */
	public void close()
	{
		isRecording=false;
		try {
			if(out_audio!=null)
			{
				out_audio.close();
			}
			if (socket_audio != null) {
				socket_audio.close();
			}
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	@Override
	protected Void doInBackground(Void... arg0){
		isRecording = true;
		connectionVideo();
		try {
			// 根据定义好的几个配置,来获取合适的缓冲大小
			int bufferSize = AudioRecord.getMinBufferSize(frequence,
					channelConfig, audioEncoding);
			// 实例化AudioRecord
			 record = new AudioRecord(
					MediaRecorder.AudioSource.MIC,frequence,
					channelConfig, audioEncoding, bufferSize);
			// 定义缓冲
			byte[] buffer = new byte[bufferSize];
			// 开始录制
			record.startRecording();
			//Timer_socket();
			// 定义循环,根据isRecording的值来判断是否继续录制
			while (isRecording) {
				record.read(buffer, 0, buffer.length); 
					for(int i=0;i<buffer.length;i++)   
					{
					      buffer[i]= (byte) (buffer[i]*5);
					}
		
				out_audio.write(video_pack.Video(buffer));
				out_audio.flush();
			}
			// 录制结束
			record.stop(); 
			record.release();
			// dos.close();
		} catch (Exception e) {
			// TODO: handle exception
			record.stop(); 
			record.release();
		}
		return null;
	}
}
注意红色那行是调节音量的,5是音量的大小
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值