安卓java摄像机的_java – Android:如何获取内置摄像头应用程序的默认摄像头设置...

我已经看过很多教程和信息,但我找不到任何一个地方如何使用现有相机应用程序的默认设置到任何其他自定义相机应用程序.我已经看到了图像的清晰度,它的焦点在内置相机应用中非常精细.现在我用我的自定义功能创建我自己的应用程序,但我仍然无法使其清晰且不模糊……我不想使用相机的Intent技术,因为我必须在之后进行一些图像处理.

我使用缩放但奇怪的是缩放功能不正常……就像它在内置相机应用程序中工作一样

这是我的表面更改代码

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h)

{

Log.e(TAG, "surfaceChanged");

// XXX stopPreview() will crash if preview is not running

if (mPreviewRunning) {

mCamera.stopPreview();

}

Camera.Parameters params = mCamera.getParameters();

List sizes = params.getSupportedPreviewSizes();

mFrameWidth = w;

mFrameHeight = h;

// selecting optimal camera preview size

{

double minDiff = Double.MAX_VALUE;

for (Camera.Size size : sizes)

{

if (Math.abs(size.height - h) < minDiff)

{

mFrameWidth = size.width;

mFrameHeight = size.height;

minDiff = Math.abs(size.height - h);

}

}

}

try

{

//params.set("rotation", 180);

//params.set("orientation", "landscape");

//params.set("auto", "WHITE_BALANCE_AUTO");//WHITE_BALANCE_AUTO

Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();

if(display.getRotation() == Surface.ROTATION_0)

{

params.setPreviewSize(mFrameHeight, mFrameWidth);

mCamera.setDisplayOrientation(90);

}

if(display.getRotation() == Surface.ROTATION_90)

{

params.setPreviewSize(mFrameWidth, mFrameHeight);

}

if(display.getRotation() == Surface.ROTATION_180)

{

params.setPreviewSize(mFrameHeight, mFrameWidth);

}

if(display.getRotation() == Surface.ROTATION_270)

{

params.setPreviewSize(mFrameWidth, mFrameHeight);

mCamera.setDisplayOrientation(180);

}

if(params.isZoomSupported())

{

Log.e(TAG, params.getZoom()+"surfaceChanged camer zoom"+params.getMinExposureCompensation());

params.setZoom(params.getMaxZoom());

params.setExposureCompensation(1);

// params.setColorEffect("none");

params.setWhiteBalance(params.WHITE_BALANCE_AUTO);

params.setFocusMode(params.FOCUS_MODE_AUTO);

params.setSceneMode(params.SCENE_MODE_ACTION);

}

params.set("auto", "FOCUS_MODE_AUTO");

params.setPreviewSize(mFrameWidth,mFrameHeight);

mCamera.setParameters(params);

mCamera.setPreviewDisplay(holder);

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

mCamera.startPreview();

mPreviewRunning = true;

}

请告诉我如何使相机预览与内置应用程序完全相同.

解决方法:

你的意思是全屏相机预览?

我用这个代码:

this.requestWindowFeature(Window.FEATURE_NO_TITLE); //no title

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //no status bar, etc

还有这个:

setContentView(R.layout.main);

addContentView(overlay, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

((FrameLayout) findViewById(R.id.preview)).addView(preview);

第一个代码段将应用设置为全屏并隐藏标题和状态栏.

第二个snipppet将我的叠加层(扩展视图)添加到主布局.

这里是我的xml和java代码:

main.xml中:

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:id="@+id/preview"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/ic_launcher" />

Overlay.java:

class Overlay extends View {

String text = "";

String textBearing = "Bearing: ";

public Overlay(Context context) {

super(context);

}

@Override

protected void onDraw(Canvas canvas) {

Paint paint = new Paint();

paint.setStyle(Paint.Style.FILL);

paint.setColor(Color.WHITE);

paint.setTextSize(16);

canvas.drawText(text, 20, 20, paint);

canvas.drawText(textBearing, 20, 50, paint);

super.onDraw(canvas);

}

}

我的活动:

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

this.requestWindowFeature(Window.FEATURE_NO_TITLE); //no title

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //fullscreen

overlay = new Overlay(this);

setContentView(R.layout.main);

addContentView(overlay, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

camera = getCameraInstance(); //camera.open();

preview = new Preview(this, camera);

((FrameLayout) findViewById(R.id.preview)).addView(preview);

}

希望能帮助到你

标签:java,android,default,camera,settings

来源: https://codeday.me/bug/20190704/1377257.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值