Mohamad Sani
Mohamad Sani

Reputation: 63

Image From Camera Intent Got Rotated in Sony Device

I'm working on an app that take picture by calling the Camera Intent. In the next Activity I use the URI of the image that I got and display the image. It works fine.

The problem is when I test in Sony Neo V device (ICS), the image get rotated 90 degrees (this is the screenshot). It doesn't happen when I test in HTC Desire device (Gingerbread) (this is the screenshot).

Here is my code:

Activity 1:

private final int CAMERA_REQUESTCODE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.memberform);

    Button photo = (Button) findViewById(R.id.btn_photo);
    photo.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_REQUESTCODE);
        }
    });

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

    if ( requestCode==CAMERA_REQUESTCODE ) {
        if ( resultCode==RESULT_OK  ) {
            GlobalVar.member.setPhotoUri(data.getData());
        } else if ( resultCode==RESULT_CANCELED ) {             
        } else {
            Toast.makeText(this, "Unknown onActivityResult resultCode = " + resultCode, Toast.LENGTH_SHORT).show();
        }           
    } else {
        Toast.makeText(this, "Unknown onActivityResult requestCode = " + requestCode, Toast.LENGTH_SHORT).show();
    }
}

Activity 2:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.memberdetail);
    ImageView photo = (ImageView) findViewById(R.id.photo);
    photo.setImageURI( GlobalVar.member.getPhotoUri() );
}

I've tried to detect if ( ImageView.getWidth()>ImageView.getHeight() ) then rotate90degrees(); but it doesn't work. And I'm hoping there's a general working code (works on any device) that solve this problem because it would be better than making a conditional if.

Any help & explanation would be appreciated. General working code would be greatly appreciated.

Many thanks

Upvotes: 2

Views: 669

Answers (1)

Bryan
Bryan

Reputation: 684

There seems to be a bug with other devices as well, not sure if all Samsung devices do it, but quite a few are doing it. I can confirm on my device Samsung infuse.

You may have to query the ContentResolver to get the orientation for each image and see if it needs rotating.

Upvotes: 2

Related Questions