Android-кнопка включения радио-камеры не работает

У меня есть радио кнопка когда я нажимаю на кнопку радио, цель камеры открывается после съемки изображения с помощью камеры. изображение не обновляется для просмотра изображения.

Я использовал все разрешения в моем файле манифеста.

RB_PhotoStatus
            .setOnCheckedChangeListener(new android.widget.RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group,
                        int checkedId) {
                    switch (checkedId) {
                    case R.id.yes:
                        //photoCollected = "Yes";
                         // create intent with ACTION_IMAGE_CAPTURE action 
                        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                        startActivityForResult(intent, 0);

                        break;

                    case R.id.no:
                        photoCollected = "No";
                        break;
                    }

                }
            });




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



          super.onActivityResult(requestCode, resultCode, data);

            Bitmap bp = (Bitmap) data.getExtras().get("data");
            imageView1.setImageBitmap(bp);


    }

4 ответа

Решение

Делать фотографии просто!

Этот ответ объясняет, как снимать фотографии с помощью существующего приложения камеры.

<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>

Запрос на приложение камеры.

static final int REQUEST_IMAGE_CAPTURE = 1;

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
}

Намерение возврата камеры с данными о функции отмены действия onActivityResult, как показано ниже:-

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        mImageView.setImageBitmap(imageBitmap);
    }
}

Для получения дополнительной информации перейдите по этой ссылке ниже:

http://developer.android.com/training/camera/photobasics.html

Это не работает, потому что Camera Intent не возвращает весь BitMap, а только ссылку (Uri) на созданный файл.

 Uri selectedImage = data.getData();

Из этого Uri вы можете перезагрузить BitMap, используя BitmapFactory.decodeFile

По радиокнопкам ();

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(cameraIntent, CAMERA_REQUEST); 

onActivityResult ();

Uri originalUri = data.getData();
imageview.setImageURI(originalUri);

И если вы хотите получить растровое изображение, то

bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), originalUri);
private String mCurrentPhotoPath;
final String state = Environment.getExternalStorageState();

        if (Environment.MEDIA_MOUNTED.equals(state)) {

            final File image = create_directory();
            // Save a file: path for use with ACTION_VIEW intents
            try {
                mCurrentPhotoPath = image.getAbsolutePath();
            } catch (Exception e) {
                e.printStackTrace();
            }

            final Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
                if (image != null) {
                    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
                    startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
                } else {
                    snackbar = Snackbar.make(findViewById(android.R.id.content), "An error has occurred", Snackbar.LENGTH_SHORT);
                    snackbar.setAction("Dismiss", clickListener);
                    snackbar.show();
                }
            }
        }

public File create_directory() {

        // Create an image file name
        final String imageFileName;
        final String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());
        final String user_id = "1_";
        imageFileName = user_id + timeStamp + "_";

        final String proj_name = "test";
        final String folder_timeStamp = new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).format(new Date());
        final String path = "/TEST/" + proj_name + "/" + folder_timeStamp;
        final File dr = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), path);
        if (!dr.exists()) {
            dr.mkdirs();
        }
        File image = null;
        try {
            image = File.createTempFile(imageFileName, ".jpg", dr);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return image;
    }

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE) {
        if (resultCode == RESULT_OK){
         //do something with the image which is stored in mCurrentPhotoPath
        }
    } 
}
Другие вопросы по тегам