AudioRecord.read
时间: 2023-06-20 19:04:57 浏览: 47
AudioRecord.read() 方法是 Android 中用于从音频录制设备读取音频数据的方法。它可以从 AudioRecord 对象读取指定数量的音频数据,并将其存储在一个缓冲区中。该方法的语法如下:
```java
public int read (byte[] audioData, int offsetInBytes, int sizeInBytes)
```
参数说明:
- `audioData`: 读取音频数据的缓冲区。
- `offsetInBytes`: 缓冲区的偏移量,即从缓冲区的哪个位置开始存储读取的音频数据。
- `sizeInBytes`: 要读取的音频数据的字节数。
该方法的返回值是实际读取的音频数据的字节数。如果返回值为负数,则表示读取失败。如果返回值为0,则表示读取完成但没有可用的数据。
相关问题
AudioRecord.read() called with invalid blocking mode
这个错误通常发生在使用AudioRecord进行录音时,read()方法的blocking mode参数传入了无效的值。blocking mode参数指定了在读取音频数据时是否应该阻塞线程,有两个可选值:阻塞模式和非阻塞模式。如果传入了一个无效的值,就会引发该错误。
解决方法是检查传入read()方法的blocking mode参数是否正确,应该传入AudioRecord类的常量之一:AudioRecord.READ_BLOCKING或AudioRecord.READ_NON_BLOCKING。如果问题仍然存在,可以尝试重新初始化AudioRecord对象或检查录音权限是否正确。
关闭时 Attempt to invoke virtual method int android.media.AudioRecord.read(bytel, int, int)' on a null object reference
这个错误是由于尝试在关闭`AudioRecord`对象之前调用`AudioRecord.read()`方法引起的。当您调用`AudioRecord.stop()`或`AudioRecord.release()`方法关闭`AudioRecord`对象时,您不能再使用`AudioRecord`对象执行任何操作,包括读取操作。您需要确保在关闭`AudioRecord`对象之前停止使用它。在关闭`AudioRecord`对象之前,您可以使用`AudioRecord.stop()`方法停止录制,然后再使用`AudioRecord.read()`方法读取数据。