Hi friends,
i have to take picture from my application and need to store it
database. i used following preview code in my app
class Preview extends SurfaceView implements SurfaceHolder.Callback
{ // <1>
private static final String TAG = "Preview";
SurfaceHolder mHolder; // <2>
public Camera camera;
Size mPreviewSize;
List<Size> mSupportedPreviewSizes;
Preview(Context context) {
super(context);
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
mHolder = getHolder(); // <4>
mHolder.addCallback(this); // <5>
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); // <6>
}
// Called once the holder is ready
public void surfaceCreated(SurfaceHolder holder) { // <7>
// The Surface has been created, acquire the camera and tell it
where
// to draw.
camera = Camera.open(); // <8>
try {
camera.setPreviewDisplay(holder); // <9>
camera.setPreviewCallback(new PreviewCallback() { // <10>
// Called for each frame previewed
public void onPreviewFrame(byte[] data, Camera camera) { //
<11>
Log.d(TAG, "onPreviewFrame called at: " +
System.currentTimeMillis());
Preview.this.invalidate(); // <12>
}
});
} catch (IOException e) { // <13>
e.printStackTrace();
}
}
// Called when the holder is destroyed
public void surfaceDestroyed(SurfaceHolder holder) { // <14>
Log.d(TAG,"Stopping preview in SurfaceDestroyed().");
camera.setPreviewCallback(null);
camera.stopPreview();
camera.release();
// camera = null;
}
// Called when holder has changed
public void surfaceChanged(SurfaceHolder holder, int format, int w,
int h) { // <15>
Camera.Parameters p = camera.getParameters();
p.setPreviewSize(w, h);
camera.setParameters(p);
camera.startPreview();
}
public void setCamera(Camera camera) {
camera = camera;
if (camera != null) {
mSupportedPreviewSizes =
camera.getParameters().getSupportedPreviewSizes();
requestLayout();
}
}
public void switchCamera(Camera camera) {
setCamera(camera);
try {
camera.setPreviewDisplay(mHolder);
} catch (IOException exception) {
Log.e(TAG, "IOException caused by setPreviewDisplay()",
exception);
}
Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(mPreviewSize.width,
mPreviewSize.height);
requestLayout();
camera.setParameters(parameters);
}
}
the same code working well in samsung galaxy tab(model no GT-P1010).
but the camera preview is not clear in samsung galaxy Verizon (model
SCH-I800). The preview is very blurry, but the photo it takes is
good. what might be problem is it there any fault in my code? how to
solve this?
Thanks
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en