繁体   English   中英

如何在不按录制按钮的情况下启用自动开始录制视频?

[英]How can I enable auto start recording video without pressing record button?

我正在开发一个应用程序,我按下录制按钮,它会自动开始视频录制并在给定的持续时间后停止。 但是我发现只是打开视频录制,我必须手动单击录制按钮并保存视频,我必须单击确定按钮。

有没有办法自动做到这一点?

这是我的代码:

public class MainActivity extends AppCompatActivity {
    private static  int CAMERA_PERMISSION_CODE=100;
    private static int VIDEO_RECORD_CODE=101;
    public Uri videoPath;
    UploadTask uploadTask;
    Button record_btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        record_btn=findViewById(R.id.record_button);
        storageReference=FirebaseStorage.getInstance().getReference();

        if (isCameraPresent()){
            Log.i("VIDEO_RECORD_TAG","Camera is Detected");
            getCameraPermission();
        }else{
            Log.i("VIDEO_RECORD_TAG","No Camera is detected");
        }


        record_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                recordVideo();
            }
        });
    }

    private boolean isCameraPresent(){
        if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)){
            return true;
        }else {
            return false;
        }
    }

    private void getCameraPermission(){
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
                == PackageManager.PERMISSION_DENIED){
            ActivityCompat.requestPermissions(this, new String[]
                    {Manifest.permission.CAMERA},CAMERA_PERMISSION_CODE);
        }
    }

    private void recordVideo(){
        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 5);
        startActivityForResult(intent,VIDEO_RECORD_CODE);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==VIDEO_RECORD_CODE){

            if (resultCode==RESULT_OK){
                assert data != null;
                videoPath=data.getData();
                Log.i("VIDEO_RECORD_TAG","Video is recorded and available at path" + videoPath);
                
            }
            else {
                Log.i("VIDEO_RECORD_TAG","Video recording has some error");
            }
        }
    }

您正在使用 Intent 来捕获视频。 这样做实际上是要求另一个应用程序为您录制视频。 当您这样做时,您必须按原样使用该应用程序,这需要按下按钮。 如果你想避免这种情况,你将不得不自己直接使用相机并处理记录。

顺便说一句 - 如果您使用 Intent 录制视频,则不需要相机权限。 如果你自己录制,你会这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM