<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="de.test3d"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".StartActivity"
android:screenOrientation="landscape"
android:label="@string/app_name">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
</manifest>
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<de.test3d.LeftCamera
android:layout_gravity="left"
android:id="@+id/leftCamera1"
android:layout_width="640dp"
android:layout_height="480dp"></de.test3d.LeftCamera>
<de.test3d.RightCamera
android:layout_gravity="right"
android:id="@+id/rightCamera1"
android:layout_width="640dp"
android:layout_height="480dp"></de.test3d.RightCamera>
</FrameLayout>
StartActivity.java:
import android.app.Activity;
import android.os.Bundle;
public class StartActivity extends Activity {
private LeftCamera leftCameraView = null;
private RightCamera rightCameraView = null;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
leftCameraView = new LeftCamera(
this.getApplicationContext(), (LeftCamera)
findViewById(R.id.leftCamera1));
rightCameraView = new RightCamera(
this.getApplicationContext(), (RightCamera)
findViewById(R.id.rightCamera1));
} @Override
protected void onPause() {
super.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
LeftCamera.java:
import java.io.IOException;
import android.content.Context;
import android.hardware.Camera;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class LeftCamera extends SurfaceView implements SurfaceHolder.Callback {
private static int CAMERAID = 0;
public LeftCamera(Context context, AttributeSet attrs) {
super(context, attrs);
}
private Camera camera;
private SurfaceHolder previewHolder;
private boolean previewRunning;
public LeftCamera(Context context, SurfaceView surfaceView) {
super(context);
previewHolder = surfaceView.getHolder();
previewHolder.addCallback(this);
previewHolder.setType(
SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open(CAMERAID);
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace();
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
this.onStop();
}
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
//not really relevant if the surface never changes
if (previewRunning)
//not really relevant if the surface never changes
if (previewRunning)
camera.stopPreview();
Camera.Parameters p = camera.getParameters();
p.setPreviewSize(width, height);
camera.setParameters(p);
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace();
}
previewRunning = true;
camera.startPreview();
}
public void onStop() {
camera.setPreviewCallback(null);
camera.stopPreview();
previewRunning = false;
camera.release();
}
public void onResume() {
camera = Camera.open(CAMERAID);
previewRunning = true;
}
}
RightCamera.java (like LeftCamera.java, except that it uses another CameraId):
import java.io.IOException;
import android.content.Context;
import android.hardware.Camera;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class RightCamera extends SurfaceView implements SurfaceHolder.Callback {
private static int CAMERAID = 4;
public RightCamera(Context context, AttributeSet attrs) {
super(context, attrs);
}
private Camera camera;
private SurfaceHolder previewHolder;
private boolean previewRunning;
public RightCamera(Context context, SurfaceView surfaceView) {
super(context);
previewHolder = surfaceView.getHolder();
previewHolder.addCallback(this);
previewHolder.setType(
SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open(CAMERAID);
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace(); }
}
public void surfaceDestroyed(SurfaceHolder holder) {
this.onStop();
}
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
//not really relevant if the surface never changes
if (previewRunning)
int width, int height) {
//not really relevant if the surface never changes
if (previewRunning)
camera.stopPreview();
Camera.Parameters p = camera.getParameters();
p.setPreviewSize(width, height);
camera.setParameters(p);
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace();
}
previewRunning = true;
camera.startPreview();
}
public void onStop() {
camera.setPreviewCallback(null);
camera.stopPreview();
previewRunning = false;
camera.release();
}
public void onResume() {
camera = Camera.open(CAMERAID);
previewRunning = true;
}
}
Keine Kommentare:
Kommentar veröffentlichen