2015-09-01 2 views
0

Я пытаюсь сделать снимок в своем приложении, а затем вернуть это изображение в изображение. Он принимает изображение, но не возвращает изображение к моему ImageViewКак добавить изображение из камеры в ImageView в мое приложение

Вот что я сделал:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    View rootView = inflater.inflate(R.layout.fragment_images, container, false); 

    imagev = (ImageView) rootView.findViewById(R.id.MyImages); 
    imagev.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      timeStamp = new SimpleDateFormat("ddMMMyyyy_HH:mm:ss").format(new Date()); 
      File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My Taken Images"); 
      imagesFolder.mkdirs(); 
      image = new File(imagesFolder.getPath(), "Image_" + timeStamp + ".jpg"); 
      fileUri = Uri.fromFile(image); 

      imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
      startActivityForResult(imageIntent, TAKE_PICTURE); 
     } 
    }); 
    return rootView; 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == TAKE_PICTURE && resultCode == RESULT_OK) { 
      imageview = ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(String.valueOf(fileUri), 512, 384); 
      ExifInterface exif = null; 
      try { 
       exif = new ExifInterface(filep); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1); 
      if (orientation != -1) { 
       switch (orientation) { 
        case ExifInterface.ORIENTATION_ROTATE_90: 
         rotate = 90; 
         break; 
        case ExifInterface.ORIENTATION_ROTATE_180: 
         rotate = 180; 
         break; 
        case ExifInterface.ORIENTATION_ROTATE_270: 
         rotate = 270; 
         break; 
        default: 
         rotate = 0; 
         break; 
       } 
      } 
      Matrix matrix = new Matrix(); 
      matrix.postRotate(rotate); 
      imagev.setImageBitmap(imageview); 

     } 
    } 
} 
} 

Что я здесь делаю неправильно? Пожалуйста, помогите!

Благодаря

+0

использовать этот https://github.com/coomar2841/image-chooser-library –

ответ

0

вас есть по крайней мере три две проблемы здесь.

Причина, по которой вы не получаете результат, заключается в том, что вы передаете недопустимое значение decodeFile(). decodeFile() берет путь; вы проходите в строке file:///. Либо удерживайте image от onCreateView(), либо используйте getPath() на Uri, чтобы получить путь к файлу.

также:

  • Вы идете через много неприятностей, чтобы настроить Matrix, то никогда не появляются, чтобы использовать его.

  • Начальная деятельность в onCreateView() необычна.

+1

Он на самом деле не начать деятельность в 'onCreateView' только определяет функцию обратного вызова, так его тонкой – forcewill

+0

Спасибо за ваш ответ. Кажется, я понимаю, но не могли бы вы показать мне, что мне нужно делать, пожалуйста? – Wildness

+0

@forcewill: Спасибо, что указали это; Я пропустил эту часть своего ответа. – CommonsWare

Смежные вопросы