如何使用额外的选项(如全景)实现相机功能?

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);

【讨论】:

我认为这会以“静止”模式而不是全景模式打开相机应用程序。

以上是关于如何使用额外的选项(如全景)实现相机功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何在应用程序中启用 iOS 6.0 全景相机?

如何使用opencv制作全景照片

使用Cesium框架实现全景图

怎么使用全景拍摄?

如何在全景/照片球模式下直接打开相机?

Three.js 进阶之旅:全景漫游-初阶移动相机版