录制的视频在Android三星设备中横向播放

时间:2013-02-19 08:42:56

标签: android android-video-player

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

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

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

我还提到了thisthis个链接。

enter image description here

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

这将是一个黑客(虽然根据this post,无法以不同的方向录制视频),但对于API级别14及以上,您可以使用{{3}转动您的VideoView

答案 2 :(得分: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