我正在制作一个Android视频应用,我在其中录制了几个视频并管理列表中的视频。视频是正确拍摄的,但它们是侧面显示的(我的意思是如果我的设备实际上处于横向模式,我可以在纵向模式下看到视频)。任何人都可以让我知道如何解决这个问题。我使用下面的代码记录
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(cameraIntent,120);
我会将视频存储在图库中。任何与自定义视频录制相关的代码也很有帮助。您可以在下图中看到我的问题。我尝试了许多方法,比如setDisplayOrientation()
和setOrientationHint()
。我想知道这个问题根本没有解决方案吗?然后开发了多少视频应用程序。请有人帮助我。
答案 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