Camera.Parameters p = camera.getParameters(); int zoom = p.getZoomRatios().get(p.getZoom()).intValue(); Camera.Size sz = p.getPreviewSize(); double aspect = (double) sz.width / (double) sz.height; double thetaV = Math.toRadians(p.getVerticalViewAngle()); double thetaH = 2d * Math.atan(aspect * Math.tan(thetaV / 2)); thetaV = 2d * Math.atan(100d * Math.tan(thetaV / 2d) / zoom); thetaH = 2d * Math.atan(100d * Math.tan(thetaH / 2d) / zoom);
import android.graphics.YuvImage; @Override public void onPreviewFrame(byte[] data, Camera camera) { try { Camera.Parameters parameters = camera.getParameters(); Size size = parameters.getPreviewSize(); YuvImage image = new YuvImage(data, parameters.getPreviewFormat(), size.width, size.height, null); File file = new File(Environment.getExternalStorageDirectory() .getPath() + "/out.jpg"); FileOutputStream filecon = new FileOutputStream(file); image.compressToJpeg( new Rect(0, 0, image.getWidth(), image.getHeight()), 90, filecon); } catch (FileNotFoundException e) { Toast toast = Toast .makeText(getBaseContext(), e.getMessage(), 1000); toast.show(); } }
Camera.Size defaultSize = parameters.getPreviewSize(); bestSize = new Point(defaultSize.width, defaultSize.height); Log.i(TAG, "No suitable preview sizes, using default: " + bestSize);
Camera.Size pre=param.getPreviewSize(); Camera.Size pic=param.getPictureSize(); mPicSize=new Point(pic.height,pic.width);
@Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { if (mCamera != null) { mCamera.stopPreview(); mCamera.release(); mCamera = null; } mCamera = Camera.open(cameraId); mController.setImageDirection(cameraId); Camera.Size size = mCamera.getParameters().getPreviewSize(); mController.setDataSize(size.height, size.width); try { mCamera.setPreviewTexture(mController.getTexture()); mController.getTexture().setOnFrameAvailableListener(new SurfaceTexture.OnFrameAvailableListener() { @Override public void onFrameAvailable(SurfaceTexture surfaceTexture) { mController.requestRender(); } }); } catch (IOException e) { e.printStackTrace(); } mCamera.startPreview(); }
@Override public boolean open(int cameraId) { mCamera=Camera.open(cameraId); if(mCamera!=null){ Camera.Parameters param=mCamera.getParameters(); picSize=getPropPictureSize(param.getSupportedPictureSizes(),mConfig.rate, mConfig.minPictureWidth); preSize=getPropPreviewSize(param.getSupportedPreviewSizes(),mConfig.rate,mConfig .minPreviewWidth); param.setPictureSize(picSize.width,picSize.height); param.setPreviewSize(preSize.width,preSize.height); mCamera.setParameters(param); Camera.Size pre=param.getPreviewSize(); Camera.Size pic=param.getPictureSize(); mPicSize=new Point(pic.height,pic.width); mPreSize=new Point(pre.height,pre.width); Log.e("wuwang","camera previewSize:"+mPreSize.x+"/"+mPreSize.y); return true; } return false; }
@Override public void onPreviewFrame(final byte[] data, Camera camera) { Camera.Parameters parameters = camera.getParameters(); int width = parameters.getPreviewSize().width; int height = parameters.getPreviewSize().height; YuvImage yuv = new YuvImage(data, parameters.getPreviewFormat(), width, height, null); ByteArrayOutputStream out = new ByteArrayOutputStream(); yuv.compressToJpeg(new Rect(0, 0, width, height), 50, out); byte[] bytes = out.toByteArray(); final Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); MyActivity.this.runOnUiThread(new Runnable() { @Override public void run() { ((ImageView) findViewById(R.id.loopback)).setImageBitmap(bitmap); } }); }
public void surfaceChanged(SurfaceHolder holder,int format, int width,int height) { camera.setPreviewCallback(new PreviewCallback() { public void onPreviewFrame(byte[] data, Camera camera) { Camera.Parameters parameters = camera.getParameters(); int width = parameters.getPreviewSize().width; int height = parameters.getPreviewSize().height; ByteArrayOutputStream outstr = new ByteArrayOutputStream(); Rect rect = new Rect(0, 0, width, height); YuvImage yuvimage=new YuvImage(data,ImageFormat.NV21,width,height,null); yuvimage.compressToJpeg(rect, 100, outstr); Bitmap bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size()); } } }
if (rawSupportedSizes == null) { Log.w(TAG, "Device returned no supported preview sizes; using default"); Camera.Size defaultSize = parameters.getPreviewSize(); if (defaultSize == null) { throw new IllegalStateException("Parameters contained no preview size!"); Camera.Size defaultPreview = parameters.getPreviewSize(); if (defaultPreview == null) { throw new IllegalStateException("Parameters contained no preview size!");
Camera.Size afterSize = afterParameters.getPreviewSize(); if (afterSize != null && (cameraResolution.x != afterSize.width || cameraResolution.y != afterSize.height)) { Log.w(TAG, "Camera said it supported preview size " + cameraResolution.x + 'x' + cameraResolution.y +
private void setParameters() { try { this.rotationDegrees = calculateDisplayRotation(); setCameraDisplayOrientation(rotationDegrees); } catch (Exception e) { Log.w(TAG, "Failed to set rotation."); } try { setDesiredParameters(false); } catch (Exception e) { // Failed, use safe mode try { setDesiredParameters(true); } catch (Exception e2) { // Well, darn. Give up Log.w(TAG, "Camera rejected even safe-mode parameters! No configuration"); } } Camera.Size realPreviewSize = camera.getParameters().getPreviewSize(); if (realPreviewSize == null) { previewSize = requestedPreviewSize; } else { previewSize = new Size(realPreviewSize.width, realPreviewSize.height); } cameraPreviewCallback.setResolution(previewSize); }
private static void handleFocusMetering(MotionEvent event, Camera camera) { Log.e("Camera", "进入handleFocusMetering"); Camera.Parameters params = camera.getParameters(); Camera.Size previewSize = params.getPreviewSize(); Rect focusRect = calculateTapArea(event.getX(), event.getY(), 1f, previewSize); Rect meteringRect = calculateTapArea(event.getX(), event.getY(), 1.5f, previewSize);
@Override public void onPreviewFrame(byte[] data, Camera camera) { frameCount++; if ( frameCount % 3000 == 0 ) { Log.i("OnPre", "gc+"); System.gc(); Log.i("OnPre", "gc-"); } if (data == null) { Parameters params = camera.getParameters(); Size size = params.getPreviewSize(); int bufferSize = (((size.width|0x1f)+1) * size.height * ImageFormat.getBitsPerPixel(params.getPreviewFormat())) / 8; camera.addCallbackBuffer(new byte[bufferSize]); } else { if(isPushing || isRecording) { libPublisher.SmartPublisherOnCaptureVideoData(publisherHandle, data, data.length, currentCameraType, currentOrigentation); } camera.addCallbackBuffer(data); } } }
public byte[] getRotatedData(byte[] data, Camera camera) { Camera.Parameters parameters = camera.getParameters(); Camera.Size size = parameters.getPreviewSize(); int width = size.width; int height = size.height; int rotationCount = getRotationCount(); if(rotationCount == 1 || rotationCount == 3) { for (int i = 0; i < rotationCount; i++) { byte[] rotatedData = new byte[data.length]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) rotatedData[x * height + height - y - 1] = data[x + y * width]; } data = rotatedData; int tmp = width; width = height; height = tmp; } } return data; }
@Override public void onPreviewFrame(byte[] data, Camera camera) { pushFrameCount++; if ( pushFrameCount % 3000 == 0 ) { Log.i("OnPre", "gc+"); System.gc(); Log.i("OnPre", "gc-"); } if (data == null) { Parameters params = camera.getParameters(); Size size = params.getPreviewSize(); int bufferSize = (((size.width|0x1f)+1) * size.height * ImageFormat.getBitsPerPixel(params.getPreviewFormat())) / 8; camera.addCallbackBuffer(new byte[bufferSize]); } else { if( isPushStart ) { libPublisher.SmartPublisherOnCaptureVideoData(publisherHandle, data, data.length, pushCurrentCameraType, currentPushOrigentation); } camera.addCallbackBuffer(data); } }
@Override public void onPreviewFrame(byte[] data, Camera camera) { frameCount++; if (frameCount % 3000 == 0) { Log.i("OnPre", "gc+"); System.gc(); Log.i("OnPre", "gc-"); } if (data == null) { Parameters params = camera.getParameters(); Size size = params.getPreviewSize(); int bufferSize = (((size.width | 0x1f) + 1) * size.height * ImageFormat.getBitsPerPixel(params.getPreviewFormat())) / 8; camera.addCallbackBuffer(new byte[bufferSize]); } else { if (isRTSPPublisherRunning || isPushingRtmp || isRecording || isPushingRtsp) { libPublisher.SmartPublisherOnCaptureVideoData(publisherHandle, data, data.length, currentCameraType, currentOrigentation); } camera.addCallbackBuffer(data); } }
private static List<Size> getPreviewSizes(Camera.Parameters parameters) { List<Camera.Size> rawSupportedSizes = parameters.getSupportedPreviewSizes(); List<Size> previewSizes = new ArrayList<>(); if (rawSupportedSizes == null) { Camera.Size defaultSize = parameters.getPreviewSize(); if (defaultSize != null) { // Work around potential platform bugs previewSizes.add(new Size(defaultSize.width, defaultSize.height)); } return previewSizes; } for (Camera.Size size : rawSupportedSizes) { previewSizes.add(new Size(size.width, size.height)); } return previewSizes; }
@Override public Camera.Parameters adjustPreviewParameters(Camera.Parameters parameters) { Camera.Parameters parameters1 = super.adjustPreviewParameters(parameters); previewSize = parameters1.getPreviewSize(); return parameters1; }
@Override public void onPreviewFrame(final byte[] data, final Camera camera) { final Size previewSize = camera.getParameters().getPreviewSize(); onPreviewFrame(data, previewSize.width, previewSize.height); }
@Test public void testPreviewSize() throws Exception { assertThat(Shadows.shadowOf(parameters).getPreviewWidth()).isNotEqualTo(320); assertThat(Shadows.shadowOf(parameters).getPreviewHeight()).isNotEqualTo(240); parameters.setPreviewSize(320, 240); Camera.Size size = parameters.getPreviewSize(); assertThat(size.width).isEqualTo(320); assertThat(size.height).isEqualTo(240); assertThat(Shadows.shadowOf(parameters).getPreviewWidth()).isEqualTo(320); assertThat(Shadows.shadowOf(parameters).getPreviewHeight()).isEqualTo(240); }