Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

android - How to lock the orientation to Portrait when using intent ACTION_IMAGE_CAPTURE?

I know I can set the orientation of the activity in the manifest, but when this activity is calling the MediaStore.ACTION_IMAGE_CAPTURE to open the camera and take a photo, the user can still take photos in landscape mode. Can I lock the orientation of the camera app itself to portrait?

Here is a sample code:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
startActivityForResult(intent, TAKE_PICTURE);

I would like to prevent the user from taking any landscape photos.

Any help would be greatly appreciated.

EDIT: Found another question on the topic that hasn't been answered: How to lock the camera app orientation called through intent in android?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

After spending some time with it, it seems like it's not possible to lock the orientation to Portrait, when using the Intent MediaStore.ACTION_IMAGE_CAPTURE.

So I decided to implement a custom camera and set the orientation in the code, via the setDisplayOrientation method, as suggested in the comments.

Basically, that's not a solution to the problem, but just another way to "tackle" it, however it suits my case because I was also able to handle the user interface and make some changes in regards to the default interface.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...