Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何创建和使用系统服务,以便在取消活动后进行连续记录_Android - Fatal编程技术网

Android 如何创建和使用系统服务,以便在取消活动后进行连续记录

Android 如何创建和使用系统服务,以便在取消活动后进行连续记录,android,Android,我是个新手。我一直在努力为我已经放在弹出菜单窗口中的录音机创建一个系统服务。从我的研究工作中,我了解到我需要将代码放入系统服务中,以便在应用程序正在使用时进行连续录制,并在单击按钮或退出应用程序时停止录制。请问我如何做到这一点。 谢谢你的帮助 这是我想在系统服务中输入的代码: 至少有人能给我一个线索吗? public class RecorderActivity extends AppCompatActivity { Button btnStartRecorder, btnStopR

我是个新手。我一直在努力为我已经放在弹出菜单窗口中的录音机创建一个系统服务。从我的研究工作中,我了解到我需要将代码放入系统服务中,以便在应用程序正在使用时进行连续录制,并在单击按钮或退出应用程序时停止录制。请问我如何做到这一点。 谢谢你的帮助

这是我想在系统服务中输入的代码:


至少有人能给我一个线索吗?
public class RecorderActivity extends AppCompatActivity {


    Button btnStartRecorder, btnStopRecorder, btnPlay, btnStop;
    String pathSave = "";
    MediaRecorder mediaRecorder;
    MediaPlayer mediaPlayer;

    final int REQUEST_PERMISSION_CODE = 1000;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recorder);


        final DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

        int width = displayMetrics.widthPixels;
        int hight = displayMetrics.heightPixels;

        getWindow().setLayout((int)(width*.8), (int)(hight*.5));

        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.gravity = Gravity.CENTER;
        params.x = 0;
        params.y = -20;

        getWindow().setAttributes(params);

      


        //Requesting Run-time permission
        if (!checkPermissionFromDevice())
            requestPermission();

        //Init View
        btnPlay = (Button)findViewById(R.id.btnPlay);
        btnStop = (Button) findViewById(R.id.btnStop);
        btnStartRecorder = (Button) findViewById(R.id.startRecord);
        btnStopRecorder = (Button) findViewById(R.id.stopRecord);
        //implementing the actions
        btnStartRecorder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (checkPermissionFromDevice())
                {


                    pathSave = Environment.getExternalStorageDirectory()
                            .getAbsolutePath()+"/"
                            + UUID.randomUUID().toString()+"_audio_record.amr";
                    setupMediaRecorder();
                    try {
                        mediaRecorder.prepare();
                        mediaRecorder.start();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                    btnPlay.setEnabled(false);
                    btnStop.setEnabled(false);
                    btnStopRecorder.setEnabled(true);

                    Toast.makeText(RecorderActivity.this, "Recording...", Toast.LENGTH_SHORT).show();
                }

                else {
                    requestPermission();
                }
            }
        });

        btnStopRecorder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mediaRecorder.stop();
                mediaRecorder.release();
                btnStopRecorder.setEnabled(false);
                btnPlay.setEnabled(true);
                btnStartRecorder.setEnabled(true);
                btnStop.setEnabled(false);
                Toast.makeText(RecorderActivity.this, "Stop Record...", Toast.LENGTH_SHORT).show();
            }
        });

        btnPlay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                btnStop.setEnabled(true);
                btnStopRecorder.setEnabled(false);
                btnStartRecorder.setEnabled(false);

                mediaPlayer = new MediaPlayer();
                try {
                    mediaPlayer.setDataSource(pathSave);
                    mediaPlayer.prepare();

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

                mediaPlayer.start();
                Toast.makeText(RecorderActivity.this, "Playing...", Toast.LENGTH_SHORT).show();

            }
        });

        btnStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                btnStopRecorder.setEnabled(false);
                btnStartRecorder.setEnabled(true);
                btnStop.setEnabled(false);
                btnPlay.setEnabled(true);

                if (mediaPlayer != null){
                    mediaPlayer.stop();
                    mediaPlayer.release();
                    setupMediaRecorder();
                    Toast.makeText(RecorderActivity.this, "Stop Playing...", Toast.LENGTH_SHORT).show();
                }
            }
        });




    }

    private void setupMediaRecorder() {
        mediaRecorder = new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mediaRecorder.setOutputFile(pathSave);
    }

    private void requestPermission() {
        ActivityCompat.requestPermissions(this, new String[]{
                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.RECORD_AUDIO

        }, REQUEST_PERMISSION_CODE);
    }

    //Press Ctr+O


    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case REQUEST_PERMISSION_CODE:
            {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
                    Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show();
                else {
                    Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
                }
            }
            break;
        }
    }

    private boolean checkPermissionFromDevice() {
        int write_external_storage_result = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        int record_audio_result = ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO);
        return write_external_storage_result == PackageManager.PERMISSION_GRANTED &&
                record_audio_result == PackageManager.PERMISSION_GRANTED;
    }

}