Я делаю программу для записи и воспроизведения звука. Это работает хорошо. Однако проблема заключается в том, что программа сработала, когда я нажимаю кнопку (справа внизу). Посмотрите мой чистый код и, пожалуйста, помогите мне исправить это. Заранее спасибоCrash when Kill/Close thread in android
private void cleanUp()
{
if (track != null)
{
mVisualizerView.release();
track.release();
track = null;
}
if (mWakeLock.isHeld()) {
mWakeLock.release();
}
if(mIsRecording)
{
mRecorder.stop();
try {
//Write file audio
} catch (IOException e) {
}
/////////////////Stop audio service
_audioManager.stopBluetoothSco();
}
mRecorder.release();
}
@Override
public void onDestroy() {
cleanUp();
super.onDestroy();
}
@Override
protected void onPause()
{
cleanUp();
super.onPause();
}
В которой эти переменные построены/используются как ниже код
private boolean mIsRecording = false;
AudioTrack track =null;
private AudioManager _audioManager;
private VisualizerView mVisualizerView;
protected PowerManager.WakeLock mWakeLock;
private AudioRecord mRecorder;
// Prevent phone from sleeping
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "My Tag");
this.mWakeLock.acquire();
//Record audio
private void startBufferedWrite(final File file) {
new Thread(new Runnable() {
@Override
public void run() {
DataOutputStream output = null;
try {
output = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
///////////Play during recording
track.play();
mVisualizerView = (VisualizerView) findViewById(R.id.visualizerView);
mVisualizerView.link(track);
while (mIsRecording) {
//Write to track
}
}
}
}).start();
}
Ошибка в том, что
FATAL EXCEPTION: Thread-35897
at java.lang.Thread.run(Thread.java:856)
Что вы хотите сделать с помощью интерфейса (VisualizerView) в потоке. –
VisualizerView - это один класс для отображения визуализации музыки. Код является ссылкой из https://github.com/felixpalmer/android-visualizer – Jame
, но как вы можете получить доступ к пользовательскому интерфейсу из фонового потока? –