媒体记录器服务中的奇怪行为

Media Recorder Strange Behavior in Service

我正在启动一项用鼠标录制语音的服务。它运行成功,因为它在服务的 OnCreate 中显示了通知和 toast。但是控件永远不会到达 mediaRecorder.prepare try 块,它甚至不会在 catch 块中显示我的吐司。 这是我的录音机服务

public class ServiceBgAudioRecorder extends Service {
    public static boolean isRecording = false;
    public static MediaRecorder mediaRecorder;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        Toast.makeText(this,"Oncreate of service",Toast.LENGTH_LONG).show();
        startRecording();
    }
    private void startRecording() {
        Notification notification = new Notification.Builder(this)
                .setContentTitle("Background Audio Recorder" )
                .setContentText("Audio recording is started")
                .setSmallIcon(R.drawable.appicon)
                .build();
        startForeground(1234, notification);
        mediaRecorder = new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mediaRecorder.setOutputFile(AppUtilities.getOutputMediaFile(AppUtilities.MEDIA_TYPE_3GP).getAbsolutePath());
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        try {
            mediaRecorder.prepare();
            mediaRecorder.start();
            Toast.makeText(this,"Audio Recording is started",Toast.LENGTH_LONG);
            isRecording = true;
        } catch (IOException e) {
            Toast.makeText(this,"Can't start Audio Recording",Toast.LENGTH_LONG);
        }
    }
    private void stopRecording() {
        mediaRecorder.release();
        mediaRecorder = null;
        isRecording = false;
    }

    @Override
    public void onDestroy() {
        stopRecording();
    }
}

我不知道为什么控件没有到达 try/catch 块。

你需要显示吐司吗? 将 show() 方法附加到 makeText()Toast.makeText(getActivity(),"Audio Recording is started",Toast.LENGTH_LONG).show();