如何在Android全景拍照中打开全景模式

13

当我想要在我的安卓应用程序中打开一个全景图片时,我遇到了一个问题。实际上,我可以打开它,但是应用程序会显示一种预览方式(从左向右滚动图片)。我希望我的应用程序能够以加速度计模式(需要转动手机才能显示整张图片的模式)打开全景图,而不是点击右下角的按钮。

我使用以下代码来打开全景图:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setComponent(new ComponentName("com.google.android.gms", "com.google.android.gms.panorama.PanoramaViewActivity"));
intent.setData(Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/DCIM/Camera/PANO_20131209_130755.jpg"));
startActivity(intent);

提前感谢,


"file://" + "/sdcard" - 这是不好的方法。请参考 Environment 类。 - Marcin Orlowski
是的,我知道。我只是为了测试而放置了这个。 - benoitm76
请提供滚动您的图像所需的按钮代码。 - ProllyGeek
1
很遗憾,目前不可能提供给您显示所需照片的模式。 PanoramaViewActivity 仅查看设置为传入 Intent 的数据 UriEXTRA_STREAM(如果前者为 null)的数据。没有额外的参数可以提供模式。 - MH.
1个回答

3
希望以下内容能够帮到您:

希望以下内容能够帮到您:

public class YourActivity extends Activity implements ConnectionCallbacks,
        OnConnectionFailedListener {

private GoogleApiClient gacClient;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    gacClient= new GoogleApiClient.Builder(this, this, this)
            .addApi(Panorama.API)
            .build();
}

@Override
public void onStart() {
    super.onStart();
    gacClient.connect();
}

@Override
public void onConnected(Bundle connectionHint) {
    Uri uri = Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/DCIM/Camera/PANO_20131209_130755.jpg");

    Panorama.PanoramaApi.loadPanoramaInfo(gacClient, uri).setResultCallback(
            new ResultCallback<PanoramaResult>() {
        @Override
        public void onResult(PanoramaResult result) {
            Intent i;
            if (result.getStatus().isSuccess() && (i = result.getViewerIntent()) != null) {
                startActivity(i);
            } else {
                // Handle unsuccessful result
            }
        }
    });
}

@Override
public void onConnectionSuspended(int cause) {
    // Handle connection being suspended
}

@Override
public void onConnectionFailed(ConnectionResult status) {
    // Handle connection failure.
}

@Override
public void onStop() {
    super.onStop();
    gacClient.disconnect();
}
}

以下是一个使用PhotoSphere而不需要使用Google+的库的链接和示例: https://github.com/kennydude/photosphere
Intent i = new Intent(MainActivity.this, SphereViewer.class);
                i.setData(Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/DCIM/Camera/PANO_20131209_130755.jpg"));
                startActivity(i);

PhotoSphere使用陀螺仪而不是加速度计,但我相信你可以使用第二种解决方案并添加自己的加速度计功能。


OP说:“我希望我的应用程序可以在加速度计模式下打开全景照片(需要将手机转动以显示整张图片),而不需要点击右下角的按钮。”看起来你的解决方案只能在预览模式下打开全景照片,无法实现加速度计模式。 - aga
1
我的意思是,OP 想要在全景模式下启动全景功能,引用一句话,“我们需要将手机转过来以显示整个图片,而不需要点击右下角的按钮”。您的解决方案在预览模式下打开全景视图,就像 OP 的解决方案一样(唯一的区别是您的解决方案适应了较新的 API)。 - aga
你知道如何使用SensorManager和SensorEventListener吗? - Kevin Crain
这个功能也可以用于资产文件夹中的全景图像吗?图片必须使用Google相机应用程序创建吗? - Bart Burg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接