我可以使用Activity
从我的Intent
打开设备的相机,如下所示:
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
Uri fileUri = getOutputMediaFileUri();
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
cameraIntent.putExtra("android.intent.extras.CAMERA_FACING", 1);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
我的问题是我的Activity
设置为风景模式,因此当相机打开时,它也会以风景模式打开 - 但我需要仅在 纵向 模式下打开相机。
因此,请在使用Intent
启动设备的相机时告诉我如何执行此操作。
...谢谢
答案 0 :(得分:3)
这是使用外部应用程序为您处理功能的问题。理论上,接受Intent
操作的应用程序应该正确处理Intent
并返回您要求的数据,但实际上,您可以采取的措施很少来强制执行此行为...例如,任何应用程序都可以说它处理"图像捕获,"但如果您将Intent
传递给程序不佳或恶意的应用程序,则无法阻止该应用程序执行与您预期完全不同的操作,或者根本没有任何操作。如果您选择让您的应用程序放弃对另一个应用程序的控制以实现某些功能,您将承担选择任何应用程序无法实现该功能的风险。
在您寻找能够添加Intent
额外内容的特定情况下,任何人都无法回答适用于所有相机应用的问题。您需要找到一个支持您想要的内容,找出如何强制它进入纵向模式,然后祈祷所有用户都安装了该特定应用程序。实际上很少有选项可以确保您的应用以您希望的方式拍摄照片:
答案 1 :(得分:1)
您无法强制第三方应用以任何特定方向启动。事实上,我注意到每当我从我的(肖像)应用程序启动标准相机应用程序时,相机应用程序就会切换到横向。
如果你设置了一个更为温和的目标,即确保用户在启动相机时以纵向方式拿着手机,你需要的是一个非常简单的第三个活动,它只是肖像。然后:
setResult()
要获得更高级别的控制权,您必须编写自己的相机应用程序或要求用户使用满足您需要的特定相机。
答案 2 :(得分:1)
这些解决方案都不起作用。布局也没有任何问题。我通过运行更高版本(API10到API15)来实现它。怪异!!