2013-12-21 2 views
1

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

Я сохраняю изображения таким образом, что изображение, полученное перезаписывает ранее принятое изображение (в данном случае, я называю изображение test.jpg и хранить его в SDCard)

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

Вот мой код.

public class MainActivity extends Activity 
{ 
ImageView imv; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    imv = (ImageView)findViewById(R.id.imv); 
    Uri uri = null; 
    String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.jpg"; 
    try 
    { 
     uri = takePhoto(path); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    imv.setImageURI(uri); 
} 

private Uri takePhoto(String path) throws IOException 
{ 
    File photo = new File(path); 
    photo.createNewFile(); 
    Uri fileUri = Uri.fromFile(photo); 
    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
    startActivityForResult(cameraIntent, 0); 
    fileUri = Uri.fromFile(new File(path)); 
    return fileUri; 
} 
} 
+0

http://chintankhetiya.wordpress.com/2013/12/14/picture-selection-from -camera-gallery/ –

+0

Где ваш метод 'onActivityResult'? – GrIsHu

+0

Проверьте мой ответ. – GrIsHu

ответ

2

Попробуйте установить изображение в onActivityResult, как показано ниже:

protected void onActivityResult(int requestCode, int resultCode, Intent ata)          
      { 
if (requestCode == 0) { 
    if (resultCode == RESULT_OK) { 

     imv = (ImageView)findViewById(R.id.imv); 
     Bitmap photo = (Bitmap) data.getExtras().get("data"); 
     imv.setImageBitmap(photo); 
    }}} 
+0

Спасибо. Это заставило его работать. Что делает onActivityResult? Не могли бы вы объяснить мне это? –

+1

Когда пользователь выполнен с последующей деятельностью и возвращает результат в текущую деятельность, система вызывает метод 'onActivityResult()' вашей активности. Результат «Intent», возвращаемый приложением Android для камеры, содержит содержимое «Uri», которое идентифицирует захваченное изображение. Чтобы успешно обработать результат, вы должны понять, каким будет формат результата «Intent». Делать это легко, когда действие, возвращающее результат, является одним из ваших собственных действий. Приложения, входящие в платформу Android, предлагают свои собственные API-интерфейсы, на которые можно рассчитывать для конкретных данных результата. – GrIsHu

+1

'onActivityResult' Вызывается, когда действие, которое вы запускали, завершает работу, предоставляя вам' requestCode', с которого вы его запускали, возвращаемый им результат «resultCode» и любые дополнительные данные из него. «ResultCode» будет «RESULT_CANCELED», если действие явно вернуло это, не вернуло никакого результата или не разбилось во время его работы. – GrIsHu

0
private static final int  PICK_CONTACT_REQUEST = 0 ; 
protected void onActivityResult(int requestCode, int resultCode, 
       Intent data) { 
      if (requestCode == PICK_CONTACT_REQUEST) { 
       if (resultCode == RESULT_OK) { 

        imv.setImageURI(uri); 

       } 
      } 
     } 

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

0

Try это,

private Uri takePhoto(String path) throws IOException 
    { 
     File photo = new File(path); 
     photo.createNewFile(); 
     if(photo.exists()) 
      photo.delete(); 
     photo = new File(path); 
     Uri fileUri = Uri.fromFile(photo); 
     Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
     startActivityForResult(cameraIntent, 0); 
     fileUri = Uri.fromFile(new File(path)); 
     return fileUri; 
    } 
Смежные вопросы