3

我正在做一个 Android 视频应用程序,我在其中录制了一些视频并管理列表中的视频。视频拍摄正确,但它们以侧面显示(我的意思是,如果我的设备实际上处于横向模式,我可以在纵向模式下观看视频)。任何人都可以让我知道如何解决这个问题。我正在使用下面的代码来记录

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(cameraIntent,120);

我会将视频存储在图库中。任何与自定义视频录制相关的代码也很有帮助。您可以在下图中看到我的问题。我尝试了很多方法,比如 put setDisplayOrientation()and also setOrientationHint()。我想知道这个问题根本没有解决方案吗?那么有多少开发视频应用程序。请有人帮助我。

我也提到了这个这个链接。

在此处输入图像描述

4

3 回答 3

1

确认您的 main.xml 文件(纵向和横向)中有替代布局。这通常应该照顾您设备的两个方向。两个 xml 文件在不同的 Layout 文件夹中应该具有相同的名称(例如 main.xml)。

于 2013-02-20T01:05:33.127 回答
1

这将是一个小技巧(虽然根据这篇文章,没有办法以不同的方向录制视频),但对于 API 级别 14 及更高级别,您可以使用媒体效果来旋转您的VideoView.

于 2013-02-26T14:59:13.040 回答
0

您显示的录制代码似乎正确。我刚刚用 ICS 在我的三星 S2 上测试了代码,视频以正确的方向播放。您没有显示回放的代码。也许这就是问题所在:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 120) { // i personally prefer using a constant here
        VideoView videoView = (VideoView) findViewById(R.id.videoView);
        videoView.setVideoURI(data.getData());
        videoView.start();
    }
}

videoView 的布局 xml 非常简单:

<VideoView
    android:id="@+id/videoView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

如果上述方法不起作用,您也可以尝试将 EXTRA_SCREEN_ORIENTATION 设置为不同的值。在我的设备上,它似乎没有什么不同,尽管 YMMV。这是代码,另外我还添加了一些额外内容,因为您要求提供更多自定义视频录制代码:

private static final int RECORD_VIDEO = 120;

private void startRecording() {
    Intent cameraIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    cameraIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); // low quality
    cameraIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 5); // limit to 5 seconds
    startActivityForResult(cameraIntent, RECORD_VIDEO);
}

还有更多附加功能:http: //developer.android.com/reference/android/provider/MediaStore.html#EXTRA_DURATION_LIMIT

于 2013-02-28T07:25:26.680 回答