Android 背景录音会自动停止
我正在设计一个背景录音代码,如下所示Android 背景录音会自动停止,android,audio,recording,Android,Audio,Recording,我正在设计一个背景录音代码,如下所示 mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(outputformat); mediaRecorder.setAudioEncoder(audioencod
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(outputformat);
mediaRecorder.setAudioEncoder(audioencoder);
mediaRecorder.setOutputFile(mRecFile.getAbsolutePath());
mediaRecorder.prepare();
mediaRecorder.start();
Thread.sleep(mDuration);
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
此代码位于线程的run()中,当主活动绑定服务时,线程将启动。如果我按“后退”键离开活动(将释放绑定),我发现录制将继续。但是,当我将mDuration设置为一个非常大的num(3600000(1小时))时,录制会在一段时间后停止,mediaRecorder.stop()代码>永远不会执行
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(outputformat);
mediaRecorder.setAudioEncoder(audioencoder);
mediaRecorder.setOutputFile(mRecFile.getAbsolutePath());
mediaRecorder.prepare();
mediaRecorder.start();
Thread.sleep(mDuration);
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
如果我不离开活动。录音总是会正常停止。我想知道的是,为什么我不能长时间录制背景声音?您应该使用ForegroundService
在背景中录制音频
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(outputformat);
mediaRecorder.setAudioEncoder(audioencoder);
mediaRecorder.setOutputFile(mRecFile.getAbsolutePath());
mediaRecorder.prepare();
mediaRecorder.start();
Thread.sleep(mDuration);
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
前台服务是一种被认为是用户主动意识到的服务,因此在内存不足时不是系统要杀死的候选服务。前台服务必须为状态栏提供通知,该状态栏位于“正在进行”标题下,这意味着除非服务停止或从前台删除,否则无法取消通知
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(outputformat);
mediaRecorder.setAudioEncoder(audioencoder);
mediaRecorder.setOutputFile(mRecFile.getAbsolutePath());
mediaRecorder.prepare();
mediaRecorder.start();
Thread.sleep(mDuration);
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
你可以获得更多关于Android前台服务的信息
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(outputformat);
mediaRecorder.setAudioEncoder(audioencoder);
mediaRecorder.setOutputFile(mRecFile.getAbsolutePath());
mediaRecorder.prepare();
mediaRecorder.start();
Thread.sleep(mDuration);
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();