ポートレートモードでビデオを録画する必要がある1つのアプリケーションを開発しています。このコードを使用してビデオをポートレートで録画しています
ここに私の主な機能があります
SurfaceView srfRecord = (SurfaceView) findViewById(R.id.surfaceRecord);
surfaceHolder = srfRecord.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL);
public void startRecording(int Request) {
try {
srfRecord.setBackgroundColor(Color.TRANSPARENT);
requestcode = Request;
sdCardRecordingPath = Environment.getExternalStorageDirectory()
+ "/" + Request + "_Video.mp4";
mediaRecorder = new MediaRecorder();
mCamera.unlock();
mediaRecorder.setCamera(mCamera);
mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setProfile(CamcorderProfile
.get(CamcorderProfile.QUALITY_HIGH));
mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
mediaRecorder.setOutputFile(sdCardRecordingPath);
mediaRecorder.setMaxDuration(10000);
mediaRecorder.prepare();
mediaRecorder.start();
mediaRecorder.setOnInfoListener(this);
mediaRecorder.setOnErrorListener(this);
recording = true;
} catch (Exception e) {
String message = e.getMessage();
Log.i(null, "Problem Start" + message);
mediaRecorder.release();
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
if (mCamera != null) {
//mCamera.setDisplayOrientation(90);
Parameters params = mCamera.getParameters();
params.set("orientation", "portrait");
mCamera.setDisplayOrientation(90);
//params.setPreviewSize(screenWidth, screenHeight-180);
mCamera.setParameters(params);
} else {
Toast.makeText(getApplicationContext(), "Camera not available!",
Toast.LENGTH_LONG).show();
}
}
public void stopRecording() {
if (mediaRecorder != null) {
mediaRecorder.setOnInfoListener(null);
mediaRecorder.setOnErrorListener(null);
mediaRecorder.stop();
mediaRecorder.release();
mCamera.stopPreview();
mediaRecorder = null;
recording = false;
}
}
レイアウト
<LinearLayout
android:id="@+id/lnrTop"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:baselineAligned="false"
android:orientation="horizontal" >
<LinearLayout
android:id="@+id/lnrPick1"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/custom_backgroud"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:id="@+id/lnrPick2"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginLeft="3dp"
android:layout_weight="1"
android:background="@drawable/custom_backgroud"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:id="@+id/lnrPick3"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginLeft="3dp"
android:layout_weight="1"
android:background="@drawable/custom_backgroud"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:id="@+id/lnrPick4"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginLeft="3dp"
android:layout_weight="1"
android:background="@drawable/custom_backgroud"
android:orientation="horizontal" >
</LinearLayout>
</LinearLayout>
<FrameLayout
android:id="@+id/frmView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/lnrBottom"
android:layout_below="@+id/lnrTop"
android:background="@drawable/custom_backgroud" >
<SurfaceView
android:id="@+id/surfaceRecord"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible" />
<!-- <TextView -->
<!-- android:id="@+id/txtTimer" -->
<!-- android:layout_width="wrap_content" -->
<!-- android:layout_height="wrap_content" -->
<!-- android:text="10:00" -->
<!-- android:textSize="18sp" -->
<!-- android:textColor="#ffffff"/> -->
<VideoView
android:id="@+id/videoview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone"
>
</VideoView>
<Chronometer
android:id="@+id/txtTimer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:format="@string/chronometer_initial_format"
android:textColor="#ffffff"
android:textSize="19sp"
android:textStyle="normal"
android:typeface="sans" />
</FrameLayout>
<RelativeLayout
android:id="@+id/lnrBottom"
android:layout_width="fill_parent"
android:layout_height="80dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@drawable/custom_backgroud" >
<Button
android:id="@+id/btnSettings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:background="@android:drawable/ic_media_play" />
<Button
android:id="@+id/btnPlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@android:drawable/ic_media_play" />
<Button
android:id="@+id/btnRefresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:background="@android:drawable/ic_media_play" />
</RelativeLayout>
それは機能していますが、ポートレートモードでは、サーフェスビューは全幅を占めていませんが、幅の 1/4 部分しか取っておらず、他の 3/4 部分は黒く表示されています
これについての解決策を教えてください
ありがとう