Tôi vừa nhận ra hoạt động của máy ảnh trong một mặt phẳng không hoạt động trên một số thiết bị. Một số DROID mang nhãn hiệu và da điện thoại. Nó hoạt động trên tất cả các điện thoại google với việc triển khai Android chuẩn cho đến nay.Các chức năng của máy ảnh Android không hoạt động trên một vài điện thoại
tôi nhận được một khoảnh khắc ngắn ngủi để gỡ lỗi một thiết bị trên 2.2 (không biết chính xác những gì mẫu điện thoại này được, nhưng nó là da) và tôi thấy trình gỡ lỗi nói (ICamera thất bại) (Camera Lỗi 100)
nhưng tôi đã không có cơ hội để tìm ra chính xác nơi nó đi sai, nhưng tôi thấy rằng những người khác đã gặp phải vấn đề này (một cái gì đó về nhận kích thước xem trước trước khi bắt đầu xem trước ??), nhưng không có phản ứng rõ ràng hoặc bất cứ điều gì trực quan với những gì Tôi có, nhưng đây là mã máy ảnh của tôi, điều gì sẽ làm cho công việc này phổ biến hơn?
//this is in OnCreate
preview = (SurfaceView) findViewById(R.id.cameraplacer);
previewHolder = preview.getHolder();
previewHolder.addCallback(surfaceCallback);
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// này nằm ngoài các phương pháp vòng đời
SurfaceHolder.Callback surfaceCallback=new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder) {
if (camera == null) {
camera = Camera.open();
try {
Camera.Parameters camParams = camera.getParameters();
camParams.setFlashMode(Parameters.FLASH_MODE_AUTO);
setDisplayOrientation(camera, 90);
camera.setPreviewDisplay(previewHolder);
camera.setParameters(camParams);
} catch (IOException e) {
camera.release();
camera = null;
}
}
}//end surfaceCreated
public void surfaceChanged(SurfaceHolder holder,
int format, int width,
int height) {
Camera.Parameters parameters=camera.getParameters();
Camera.Size size=getBestPreviewSize(width, height,
parameters);
if (size!=null) {
parameters.setPreviewSize(size.width, size.height);
camera.setParameters(parameters);
camera.startPreview();
inPreview=true;
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (camera != null) {
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release();
camera = null;
}
}
};//end CallBack
private Camera.Size getBestPreviewSize(int width, int height,
Camera.Parameters parameters) {
Camera.Size result=null;
for (Camera.Size size : parameters.getSupportedPreviewSizes()) {
if (size.width<=width && size.height<=height) {
if (result==null) {
result=size;
}
else {
int resultArea=result.width*result.height;
int newArea=size.width*size.height;
if (newArea>resultArea) {
result=size;
}
}
}
}
return(result);
}//end getBestPreviewSize
// đây là trên OnResume
try {
//Method rotateMethod = android.hardware.Camera.class.getMethod("setDisplayOrientation", int.class);
//rotateMethod.invoke(camera, 90);
//Camera.Parameters camParams = camera.getParameters();
//camParams.setPreviewSize(480, 320);// here w h are reversed
//camera.setParameters(camParams);*/
//setCameraDisplayOrientation(MainPhoto.this, 0, camera);
if(camera!=null)
{
Camera.Parameters camParams = camera.getParameters();
camParams.setFlashMode(Parameters.FLASH_MODE_AUTO);
camera.setParameters(camParams);
setDisplayOrientation(camera, 90);
camera.setPreviewDisplay(previewHolder);
camera.startPreview();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}/* catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/ catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}/* catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
Nếu không có thông báo nhật ký và bảng điều khiển bạn đang nhận được, tôi không nghĩ nhiều người có thể giúp bạn về điều này. –