MediaRecorder захват видео в портретном режиме
Я пытаюсь создать собственное видео приложение. Iwork с использованием настроек в манифесте2.2 only (API 8).
Все идет хорошо, но я не понимаю, почему видео в портретном режиме не отличается от lanscape.
Для обнаружения изменения ориентации устройства я использую этот код в SurfaceChanged ()
if (mCamera != null) {
Camera.Parameters p = mCamera.getParameters();
try {
mCamera.stopPreview();
} catch (Exception e) {
// TODO: handle exception
}
int previewWidth = 0;
int previewHeight = 0;
if (mPreviewSize != null) {
Display display = ((WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
switch (rotation) {
case Surface.ROTATION_0:
previewWidth = mPreviewSize.height;
previewHeight = mPreviewSize.width;
mCamera.setDisplayOrientation(90);
break;
case Surface.ROTATION_90:
previewWidth = mPreviewSize.width;
previewHeight = mPreviewSize.height;
mCamera.setDisplayOrientation(0);
break;
case Surface.ROTATION_180:
previewWidth = mPreviewSize.height;
previewHeight = mPreviewSize.width;
mCamera.setDisplayOrientation(270);
break;
case Surface.ROTATION_270:
previewWidth = mPreviewSize.width;
previewHeight = mPreviewSize.height;
mCamera.setDisplayOrientation(180);
break;
}
p.setPreviewSize(previewWidth, previewHeight);
mCamera.setParameters(p);
}
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
} catch (Exception e) {
Log.d(TAG, "Cannot start preview.", e);
}
}
Работает как шарм. Если я поворачиваю поверхность устройства, меняю ориентацию, вызывая SurfaceChanged, где для камеры задано соответствующее значение DisplayRotation.
Вопрос в том, как определить позже, было ли видео снято либо в режиме Lanscape, либо в портретном режиме. Как я понял, все видео сняты в альбомной ориентации. Это не зависит от setDisplayOrientation, которые влияют только на процесс предварительного просмотра.
Также, исследуя проблему, я заметил, что если использовать стандартное приложение «Камера», оно записывает специальный тег в видеофайл (видно из MediaInfo):Rotation : 90 для портрета снято видео.
Но класс MediaRecorder этого не делает.
Кажется, это проблема. Кто-нибудь должен решить это?