TextureViewActivitypublic class TextureViewActivity extends android.app.Activity implements TextureView.SurfaceTextureListener
Fields Summary |
---|
private android.hardware.Camera | mCamera | private android.view.TextureView | mTextureView | private android.widget.FrameLayout | mContent | private android.graphics.Matrix | mMatrix |
Methods Summary |
---|
private int | getCameraOrientation()
Camera.CameraInfo info = new Camera.CameraInfo();
for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
Camera.getCameraInfo(i, info);
if (info.facing == Camera.CameraInfo.CAMERA_FACING_BACK) break;
}
int rotation = getWindowManager().getDefaultDisplay().getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0:
degrees = 0;
break;
case Surface.ROTATION_90:
degrees = 90;
break;
case Surface.ROTATION_180:
degrees = 180;
break;
case Surface.ROTATION_270:
degrees = 270;
break;
}
return (info.orientation - degrees + 360) % 360;
| protected void | onCreate(android.os.Bundle savedInstanceState)
super.onCreate(savedInstanceState);
mContent = new FrameLayout(this);
mTextureView = new TextureView(this);
mTextureView.setSurfaceTextureListener(this);
mTextureView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap b = mTextureView.getBitmap(800, 800);
BufferedOutputStream out = null;
try {
File dump = new File(Environment.getExternalStorageDirectory(), "out.png");
out = new BufferedOutputStream(new FileOutputStream(dump));
b.compress(Bitmap.CompressFormat.PNG, 100, out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (out != null) try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
Button button = new Button(this);
button.setText("Remove/Add");
button.setOnClickListener(new View.OnClickListener() {
private boolean mAdded = true;
@Override
public void onClick(View v) {
if (mAdded) {
mContent.removeView(mTextureView);
} else {
mContent.addView(mTextureView);
}
mAdded = !mAdded;
}
});
mContent.addView(mTextureView, new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT,
Gravity.CENTER));
mContent.addView(button, new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM));
setContentView(mContent);
| public void | onSurfaceTextureAvailable(android.graphics.SurfaceTexture surface, int width, int height)
mCamera = Camera.open();
mCamera.setDisplayOrientation(getCameraOrientation());
Camera.Size previewSize = mCamera.getParameters().getPreviewSize();
mTextureView.setLayoutParams(new FrameLayout.LayoutParams(
previewSize.width, previewSize.height, Gravity.CENTER));
try {
mCamera.setPreviewTexture(surface);
} catch (IOException t) {
android.util.Log.e("TextureView", "Cannot set preview texture target!", t);
}
mCamera.startPreview();
| public boolean | onSurfaceTextureDestroyed(android.graphics.SurfaceTexture surface)
mCamera.stopPreview();
mCamera.release();
return true;
| public void | onSurfaceTextureSizeChanged(android.graphics.SurfaceTexture surface, int width, int height)
// Ignored, the Camera does all the work for us
| public void | onSurfaceTextureUpdated(android.graphics.SurfaceTexture surface)
// Ignored
|
|