Есть ли способ вызвать метод, когда снимок сделан - PullRequest
1 голос
/ 26 сентября 2019

Я новичок в разработке для мобильных устройств, и я работаю над приложением, и для этого приложения мне нужно получить время в тот момент, когда снимок сделан.Я хочу получить точное время с сервера, поэтому мне нужно вызвать метод, потому что время в данных 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);
    }
}

Так что я хотел бы вызвать метод, в котором я сохраняю точное время, когда был сделан снимок.Я также искал, был ли способ избавиться от этого экрана подтверждения, но, похоже, его нет, но это также было бы хорошим решением.

Ответы [ 3 ]

0 голосов
/ 26 сентября 2019

Поскольку вы используете собственное приложение камеры, у вас меньше контроля над ним.Может быть, вы можете реализовать свое собственное приложение для камеры, а когда вы делаете фотографии внутри своего приложения, вы можете легко делать то, что упоминаете.

0 голосов
/ 26 сентября 2019

Момент, когда ваш onActivityResult вызывается с RESULT_OK, означает, что вы успешно сделали снимок, чтобы вы могли получить текущее время внутри onActivityResult с помощью System.currentTimeMillis ().

0 голосов
/ 26 сентября 2019

Я не уверен, но вы можете создать один метод, который будет вызывать каждую секунду в фоновом режиме

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

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

, когда вы вызываете камеру открытым щелчком мыши, а затем вам нужно наблюдать, происходит ли приращение памяти или нет вПапка DCIM или в хранилище.Прямо у меня нет, это возможно в системной камере, или вы можете использовать камеру API в вашем приложении

...