mPreviewing = false;
}
- public void openDriver(SurfaceHolder holder) throws IOException {
- // "throws IOException added to accommodate Android 1.5
+ // Throws IOException added to accommodate Android 1.5.
+ public String openDriver(SurfaceHolder holder, boolean getParameters) throws IOException {
+ String result = null;
if (mCamera == null) {
mCamera = Camera.open();
mCamera.setPreviewDisplay(holder);
+ if (getParameters) {
+ result = collectCameraParameters();
+ }
setCameraParameters();
}
+ return result;
}
public void closeDriver() {
if (mCamera != null && mPreviewing) {
mPreviewHandler = handler;
mPreviewMessage = message;
- mCamera.setOneShotPreviewCallback(previewCallback);
+ mCamera.setPreviewCallback(previewCallback);
}
}
*/
public Rect getFramingRect() {
if (mFramingRect == null) {
- int width = mScreenResolution.x;
+ int width = mScreenResolution.x * 3 / 4;
int height = mScreenResolution.y * 3 / 4;
int leftOffset = (mScreenResolution.x - width) / 2;
int topOffset = (mScreenResolution.y - height) / 2;
private final Camera.PreviewCallback previewCallback = new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
if (mPreviewHandler != null) {
+ mCamera.setPreviewCallback(null);
Message message = mPreviewHandler.obtainMessage(mPreviewMessage,
mScreenResolution.x, mScreenResolution.y, data);
message.sendToTarget();
mCamera.setParameters(parameters);
}
+ private String collectCameraParameters() {
+ Camera.Parameters parameters = mCamera.getParameters();
+ String[] params = parameters.flatten().split(";");
+ StringBuffer result = new StringBuffer();
+ result.append("Default camera parameters:");
+ for (String param : params) {
+ result.append("\n ");
+ result.append(param);
+ }
+ result.append('\n');
+ return result.toString();
+ }
+
private Point getScreenResolution() {
if (mScreenResolution == null) {
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);