在后台服务中录制音频

问题描述:

嗨,大家好,我试图用moveTaskToBack(true);方法将活动发送到后台后记录几秒钟的音频。我在记录开始时创建了一项服务,并设置了我希望记录音频的时间。一旦它最小化,问题就来了。它会在2秒钟或更短时间后停止录制,我需要录制大约一分钟。我想知道如果应用程序在后台运行,是否真的有可能录制音频。在后台服务中录制音频

我的服务记录是这样的:

@Override 
    protected void onHandleIntent(Intent intent) { 

    recorder = new MediaRecorder(); 
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    recorder.setOutputFormat(output_formats[currentFormat]); 
    recorder.setOutputFile(fake.getFilename()); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 

    try { 
     recorder.prepare(); 

      recorder.start(); 
      new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        recorder.stop(); 
       } 
      }, 6000000); 

    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

而且我的活动调用服务并关闭这样的:

public void mecierro() { 
     Intent intent = new Intent(Panic.this, Record_service.class); 
     Panic.this.startService(intent); //starting the service 

     start1 = new CountDownTimer(5000, 1000) { 

      public void onTick(long millisUntilFinished) { 
      } 

      public void onFinish() { 
      moveTaskToBack(true); //"minimizing" the app 
      } 
    }.start(); 


} 

感谢您的帮助!

+0

当你的应用程序转到后台时,它可以很容易地被低内存显示器杀死 - 这是一个如果它可以停止记录的原因。我会试着抓住一个唤醒锁 - 你可能不希望设备陷入睡眠模式,而无论如何,请参阅http://developer.android.com/reference/android/os/PowerManager.WakeLock.html –

是的,它是百分之百的可能在后台录制音频。 使用服务启动录音机。 然后,您启动此服务的活动使用方法 startForeground()而不是startService() 这是因为您的服务在它可以进一步记录之前被杀死。除非用户强迫前台服务不太可能被杀。