# RxAndroidAudio
**Repository Path**: wu4321/RxAndroidAudio
## Basic Information
- **Project Name**: RxAndroidAudio
- **Description**: Maybe the most robust Android Audio encapsulation library, with part Rx support.
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-05-23
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# RxAndroidAudio
Android Audio encapsulation library, with part Rx support.
## Usage
Add to gradle dependency of your module build.gradle:
```gradle
repositories {
jcenter()
}
dependencies {
compile 'com.github.piasy:rxandroidaudio:1.0.2'
}
```
Declare permissions:
```xml
```
Use in code:
Record to file:
```java
mAudioRecorder = AudioRecorder.getInstance();
mAudioFile = new File(
Environment.getExternalStorageDirectory().getAbsolutePath() +
File.separator + System.nanoTime() + ".file.m4a");
mAudioRecorder.prepareRecord(MediaRecorder.AudioSource.MIC,
MediaRecorder.OutputFormat.MPEG_4, MediaRecorder.AudioEncoder.AAC,
mAudioFile);
// ...
mAudioRecorder.stopRecord();
```
Play a file:
```java
mRxAudioPlayer.play(audioFile)
.subscribeOn(Schedulers.io())
.subscribe(new Action1() {
@Override
public void call(Boolean aBoolean) {
// play finished
}
});
```
Record a stream:
```java
mOutputFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
File.separator + System.nanoTime() + ".stream.m4a");
mOutputFile.createNewFile();
mFileOutputStream = new FileOutputStream(mOutputFile);
mStreamAudioRecorder.start(new StreamAudioRecorder.AudioDataCallback() {
@Override
public void onAudioData(byte[] data, int size) {
if (mFileOutputStream != null) {
try {
mFileOutputStream.write(data, 0, size);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onError() {
mBtnStart.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Record fail",
Toast.LENGTH_SHORT).show();
mBtnStart.setText("Start");
mIsRecording = false;
}
});
}
});
```
Play a stream:
```java
Observable.just(mOutputFile).subscribeOn(Schedulers.io()).subscribe(new Action1() {
@Override
public void call(File file) {
try {
mStreamAudioPlayer.init();
FileInputStream inputStream = new FileInputStream(file);
int read;
while ((read = inputStream.read(mBuffer)) > 0) {
mStreamAudioPlayer.play(mBuffer, read);
}
inputStream.close();
mStreamAudioPlayer.release();
} catch (IOException e) {
e.printStackTrace();
}
}
});
```
See [full example](https://github.com/Piasy/RxAndroidAudio/tree/master/app) for more details.
[Download demo apk](https://www.pgyer.com/rsyU).
## Dev tips
+ You need create an empty file named `bintray.properties` under root project dir, which is used for uploading artifact to bintray.