मुझे अभी एहसास हुआ कि सतहीधारक में मेरी कैमरा गतिविधि कुछ उपकरणों पर काम नहीं करती है। कुछ ड्रॉइड ब्रांडेड और चमड़े वाले फोन। यह अब तक मानक एंड्रॉइड कार्यान्वयन के साथ सभी Google फोन पर काम करता है।एंड्रॉइड कैमरा फ़ंक्शंस कुछ फोन पर काम नहीं करते
मैं 2.2 पर डिवाइस को डिबग करने के लिए एक संक्षिप्त पल मिल गया (पता नहीं है इस वास्तव में क्या मॉडल फोन था, लेकिन यह चमड़ी था) और मैंने देखा डिबगर कहा (ICamera विफल) (कैमरा त्रुटि 100)
लेकिन मुझे यह पता लगाने का मौका नहीं मिला कि यह कहां गलत है, लेकिन मुझे लगता है कि दूसरों को इस समस्या का सामना करना पड़ा है (पूर्वावलोकन शुरू करने से पहले पूर्वावलोकन आकार प्राप्त करने के बारे में कुछ ??), लेकिन कोई स्पष्ट प्रतिक्रिया या कुछ भी सहज नहीं है मेरे पास है, लेकिन यह मेरा कैमरा कोड है, यह काम अधिक सार्वभौमिक रूप से क्या करेगा?
//this is in OnCreate
preview = (SurfaceView) findViewById(R.id.cameraplacer);
previewHolder = preview.getHolder();
previewHolder.addCallback(surfaceCallback);
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// इस जीवन चक्र के तरीकों के बाहर है
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
// इस 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();
}*/
आपके द्वारा प्राप्त किए जा रहे लॉग और कंसोल संदेशों के बिना, मुझे नहीं लगता कि बहुत से लोग इस पर आपकी सहायता कर सकते हैं। –