【发布时间】:2019-03-10 04:45:00
【问题描述】:
我正在使用Service 类创建一个后台录音机。当我开始录制时它工作正常,但当我停止它时,它会在 onStop() 上抛出 IllegalStateException。
这是我的服务类代码:
public class AudioRecorderService extends Service {
MediaRecorder mAudioRecorder;
String fileName = null;
public AudioRecorderService() {
}
@Override
public void onCreate() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
setupRecorder();
Toast.makeText(this, "Recording Started", Toast.LENGTH_LONG).show();
return START_STICKY;
}
private void setupRecorder(){
fileName = Environment.getDataDirectory().getAbsolutePath() + "/" + "test.mp4";
mAudioRecorder = new MediaRecorder();
mAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mAudioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mAudioRecorder.setAudioEncodingBitRate(256);
mAudioRecorder.setAudioChannels(1);
mAudioRecorder.setAudioSamplingRate(44100);
mAudioRecorder.setOutputFile(fileName);
try {
mAudioRecorder.prepare();
mAudioRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
if (mAudioRecorder != null) {
mAudioRecorder.stop();
mAudioRecorder.reset();
mAudioRecorder.release();
}
Toast.makeText(this, "Recording Done", Toast.LENGTH_LONG).show();
}
}
我无法弄清楚代码有什么问题。请问谁能帮忙???
【问题讨论】:
-
您的代码看起来不错,可以发布 logcat 吗?
-
现在,当我尝试执行 AudioRecorder Service 类时,我的应用程序一次又一次地获得 ANR。我想有一些线程问题。
标签: android audiorecord