拍照时是否可以调用方法

时间:2019-09-26 07:19:56

标签: android android-camera-intent

我是移动开发的新手,我正在开发一个应用程序,对于该应用程序,我需要在拍摄照片的确切时间获取时间。我想从服务器获取准确的时间,所以我需要调用一个方法,因为exif数据中的时间不够准确。我使用的是摄像头意图,但这显示了结果,需要确认后才能调用下一个代码。使用相机意图拍摄照片时,是否可以调用代码或方法?

这是我现在拥有的代码。我调用dispatchTakePictureIntent,该方法将启动意图。然后,onActivityResult将获取摄影机的结果,但是在确认之后调用此方法的时刻。

public void dispatchTakePictureIntent(View view) {
    PackageManager pckMgr = getPackageManager();

    if (pckMgr.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)){
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
    } else {
        Toast.makeText(getApplicationContext(), "Camera werkt niet ",Toast.LENGTH_LONG).show();
    }
}

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

    if (RESULT_OK == resultCode) {
        // Get Extra from the intent
        Bundle extras = data.getExtras();
        // Get the returned image from extra
        Bitmap bmp = (Bitmap) extras.get("data");

        imageView = (ImageView) findViewById(R.id.imageView6);
        imageView.setImageBitmap(bmp);
    }
}

所以id喜欢调用一种方法,在该方法中我可以保存拍摄照片的确切时间。我还搜索了是否有摆脱此确认屏幕的方法,但似乎没有,但是这也是一个很好的解决方案。

3 个答案:

答案 0 :(得分:0)

我不确定,但是您可以创建一个在后台每秒调用一次的方法

Handler handler = new Handler();
int delay = 1000; //milliseconds

handler.postDelayed(new Runnable(){
    public void run(){
        //do something
        handler.postDelayed(this, delay);
    }
}, delay);

当您打开相机呼叫按钮时,然后您需要观察DCIM文件夹或存储中是否发生了一些存储增量。我不直接在系统相机中使用它,或者您可以在应用中使用相机API

答案 1 :(得分:0)

由于使用的是本机摄像头应用程序,因此对其的控件较少。 也许您可以实现自己的相机应用程序,并且在应用程序中拍照时,您可以轻松完成自己提到的事情。

答案 2 :(得分:0)

使用RESULT_OK调用onActivityResult的那一刻意味着您成功捕获了照片,因此可以使用System.currentTimeMillis()获取onActivityResult中的当前时间。