如何使用额外的选项(如全景)实现相机功能?
Posted
技术标签:
【中文标题】如何使用额外的选项(如全景)实现相机功能?【英文标题】:How to implement Camera functionality with extra options (like Panorama)? 【发布时间】:2014-04-07 23:18:23 【问题描述】:我主要对全景选项感兴趣。有没有办法打开原生相机应用(增强版),让用户可以在普通照片和全景视图之间切换?有可能还是我应该停止尝试?
这是我现在使用的代码:
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, CAMERA_REQUEST);
这是目前发生的情况:
这就是我需要实现的目标:
谢谢!
【问题讨论】:
【参考方案1】:显然,目前还不能直接从应用程序中使用全景或全景照片模式,因为它们依赖于 Google 提供的专有类。也许在下一个 Android API 版本中就有可能。
见How to open camera directly in panorama/photosphere mode?或How to open photosphere camera?
【讨论】:
【参考方案2】:没有标准的方法来做到这一点。 AFAIK 全景、Photoshere 是 Gallery3d(由 Google 提供)包 com.google.android.gallery3d。这取决于 设备的固件。
在清单文件中
<activity clearTaskOnLaunch="true" screenOrientation="0"
name="com.google.android.apps.lightcycle.ProtectedPanoramaCaptureActivity"
theme="resource_id:0x1030007"
configChanges="1184"
label="resource_id:0x7f0a00b2"
windowSoftInputMode="35"
taskAffinity="com.google.android.camera">
<intent-filter>
<action name="android.intent.action.MAIN">
</action>
</intent-filter>
</activity>
在你的活动中
Intent res = new Intent();
String mPackage = "com.google.android.gallery3d";
String mClass = "com.google.android.apps.lightcycle.ProtectedPanoramaCaptureActivity";
res.setComponent(new ComponentName(mPackage,mClass));
startActivity(res);
【讨论】:
这不会返回捕获图像的路径,所以我看不出它在这里有什么用。【参考方案3】:您可以使用以下代码打开妄想模式
Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
startActivity(intent);
【讨论】:
我认为这会以“静止”模式而不是全景模式打开相机应用程序。以上是关于如何使用额外的选项(如全景)实现相机功能?的主要内容,如果未能解决你的问题,请参考以下文章