gpt4 book ai didi

android - LibGdx录制和播放声音

转载 作者:行者123 更新时间:2023-12-03 01:45:01 29 4
gpt4 key购买 nike

我有一个可以录制10秒钟并播放声音的应用程序。但是由于某种原因,当我运行它时,该应用程序无法播放,只能在听到一定音量的声音时才录制并翻转屏幕(真实电话)。
我真的没有想法,代码似乎很好,将不胜感激。

package com.mygdx.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.AudioDevice;
import com.badlogic.gdx.audio.AudioRecorder;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class MyGdxGame extends ApplicationAdapter{

@Override
public void create () {
AudioDevice playbackDevice = Gdx.audio.newAudioDevice(44100, true);
AudioRecorder recordingDevice = Gdx.audio.newAudioRecorder(44100, true);
short[] samples = new short[44100 * 10]; // 10 seconds mono audio
recordingDevice.read(samples, 0, samples.length);
playbackDevice.writeSamples(samples, 0, samples.length);
recordingDevice.dispose();
playbackDevice.dispose();

}

@Override
public void render () {

}

@Override
public void dispose () {
}
}

它是程序中唯一的类。

最佳答案

不要使用游戏线程进行录制,而要创建另一个线程并在该新线程中开始录制。我在下面添加了一个小示例,在Android中可以正常工作。

public class RecordingTest extends ApplicationAdapter{

Stage stage;

@Override
public void create() {

final AudioDevice playbackDevice = Gdx.audio.newAudioDevice(44100, true);
final AudioRecorder recordingDevice = Gdx.audio.newAudioRecorder(44100, true);

stage=new Stage();
final Label labelStatus=new Label("NOTHING",new Label.LabelStyle(new BitmapFont(), Color.BLUE));

final short[] samples = new short[44100 * 10]; // 10 seconds mono audio

new Thread(new Runnable() {
@Override
public void run() {

labelStatus.setText("Recording Started");
recordingDevice.read(samples, 0, samples.length);
recordingDevice.dispose();
labelStatus.setText("Recording Ended");
labelStatus.setText("Recorded sample start Playing");
playbackDevice.writeSamples(samples, 0, samples.length);
labelStatus.setText("Playing Ended");
playbackDevice.dispose();

}
}).start();

Table table=new Table();
table.setFillParent(true);
table.add(labelStatus);
stage.addActor(table);
}

@Override
public void render() {

Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClearColor(1,1,1,1);

stage.draw();
stage.act();
}

@Override
public void dispose() {
stage.dispose();
}
}

关于android - LibGdx录制和播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44303926/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com