Почему приложение не может отправить голос говорящим в режиме реального времени? - PullRequest
0 голосов
/ 16 октября 2019

Приложение не открывается.

Я на самом деле новичок в Android Dev, а также я мало работал с потоками. Я действительно не знаю, как start (), release () и stop () работает, и я не мог найти информацию об использовании буферов вместо каталогов. Можно ли вообще передать голос из микробуфера на динамики?

public class MainActivity extends AppCompatActivity {

private MediaRecorder micro = null;
private MediaPlayer speakers = null;
private ByteBuffer audioBuffer;
private String bufferString = getExternalCacheDir().getAbsolutePath();
File buffer = new File(bufferString);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 1);
    micro = new MediaRecorder();
    speakers = new MediaPlayer();

    startRecording();
}

private void startRecording(){
    micro.setAudioSource(MediaRecorder.AudioSource.MIC);
    micro.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    micro.setOutputFile(buffer);
    micro.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    speakers.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
        micro.prepare();
        speakers.setDataSource(bufferString);
        speakers.prepare();
    }catch(IOException e){e.printStackTrace();}
    new Runnable() {
        @Override
        public void run() {
            while(true){
                micro.start();
                speakers.stop();
                micro.release();
                speakers.start();
            }
        }
    };
}

}

Я пытался создать приложение, которое напрямую и в режиме реального времени передает голос с микро на динамики.

...