Сфотографируйте, нажав на экран - Android - PullRequest
0 голосов
/ 02 февраля 2019

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

ГЛАВНЫЙ КЛАСС:

//button listeners
//(1)
    takePic.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          chosenButton=TAKE_PIC;
            //call user.takePic or write the code directly
            Intent intent = new Intent (MainActivity.this, UploadTakeImage.class);
            startActivity(intent);
        }
    });
    //(2)
    uploadPic.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            chosenButton=UPLOAD_PIC;
            //call user.uploadPic or write the code directly
            Intent intent = new Intent (MainActivity.this, UploadTakeImage.class);
            startActivity(intent);
        }
    });

ЗАГРУЗИТЬ, СДЕЛАТЬ КЛАСС ИЗОБРАЖЕНИЯ

import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.WindowManager;
import android.widget.ImageView;
import java.util.Objects;

public class UploadTakeImage extends AppCompatActivity {
    private float x1,x2,y1,y2;
    private ImageView image;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //to make it cover the entire screen,
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
       // getSupportActionBar().hide();

        setContentView(R.layout.activity_upload_take_image);
        image= findViewById(R.id.imageToUpload);
        // repeatDescription =(Button) findViewById(R.id.repeatDescription);

// TO PEN THE GALLARY

        if(MainActivity.chosenButton==MainActivity.UPLOAD_PIC)
            uploadPicture();
        else
            takePicture();
    }


    //to allow user select image from the gallary


    public void uploadPicture() {

        Intent gallaryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(gallaryIntent,MainActivity.chosenButton);

    }

    public void takePicture() {

        Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent,MainActivity.chosenButton);

    }

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //to upload picture
        if( requestCode==MainActivity.UPLOAD_PIC&&resultCode==RESULT_OK &&data!=null){
            //how to pass this to class user
            //address of the selected image
            Uri selectedImage = data.getData();
            //to display the selected image in the image view (interface)
            image.setImageURI(selectedImage);
        }
        // allow user to take a picture
        if( requestCode==MainActivity.TAKE_PIC&&resultCode==RESULT_OK &&data!=null){
            Bitmap takenPicture = (Bitmap) Objects.requireNonNull(data.getExtras()).get("data");
            image.setImageBitmap(takenPicture);

        }

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {


        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                x1=event.getX();
                y1=event.getY();
                break;
            case MotionEvent.ACTION_UP:
                x2=event.getX();
                y2=event.getY();

                if(x1<x2){
                    // go to home screen
                    Intent intent = new Intent (UploadTakeImage.this, MainActivity.class);
                    startActivity(intent);

                }
                break;

        }//end switch
        //if swipe left to right

        return super.onTouchEvent(event);
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...