2012-05-29 3 views
9

Я хотел бы сделать снимок без предварительного просмотра. Я использовал этот код, но я получаю сообщение об ошибке:Take Picture без предварительного просмотра Android

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Camera.Parameters parameters = camera.getParameters(); 
    parameters.setPictureFormat(PixelFormat.JPEG); 
    camera.setParameters(parameters); 
    SurfaceView mview = new SurfaceView(getBaseContext()); 
    try { 
     camera.setPreviewDisplay(mview.getHolder()); 
     camera.startPreview(); 
     camera.takePicture(null,null,photoCallback); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 




} 

Camera.PictureCallback photoCallback=new Camera.PictureCallback() { 
    public void onPictureTaken(byte[] data, Camera camera) { 

     Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues()); 
     OutputStream imageFileOS; 

     try { 

      imageFileOS = getContentResolver().openOutputStream(uriTarget); 
      imageFileOS.write(data); 
      imageFileOS.flush(); 
      imageFileOS.close(); 

      Toast.makeText(AndroidTestJNIActivity.this, "Image saved: " + uriTarget.toString(), Toast.LENGTH_LONG).show(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 

     } catch (IOException e) { 
      e.printStackTrace(); 

     } 
     finish(); 

    } 
}; 

я получаю NullPointerException при попытке доступа к камере. Я не знаю, как его инициализировать. Я думаю, проблема в том, что камера никогда не инициализируется.

05-29 14:40:20.330: E/AndroidRuntime(15571): FATAL EXCEPTION: main 
05-29 14:40:20.330: E/AndroidRuntime(15571): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.achillessecurity.androidtestjni/com.achillessecurity.androidtestjni.AndroidTestJNIActivity}: java.lang.RuntimeException: Fail to connect to camera service 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.os.Looper.loop(Looper.java:130) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread.main(ActivityThread.java:3835) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at java.lang.reflect.Method.invokeNative(Native Method) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at java.lang.reflect.Method.invoke(Method.java:507) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at dalvik.system.NativeStart.main(Native Method) 
05-29 14:40:20.330: E/AndroidRuntime(15571): Caused by: java.lang.RuntimeException: Fail to connect to camera service 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.hardware.Camera.native_setup(Native Method) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.hardware.Camera.<init>(Camera.java:258) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.hardware.Camera.open(Camera.java:235) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at com.achillessecurity.androidtestjni.AndroidTestJNIActivity.onCreate(AndroidTestJNIActivity.java:42) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-29 14:40:20.330: E/AndroidRuntime(15571): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722) 

Я инициализировать камеру: camera= Camera.open();

+0

опубликуйте свой журнал ошибок. –

+0

@PadmaKumar i обновить сообщение с помощью stacktrace – 113408

+0

@ 113408 Вы можете мне помочь? Мне нужно приложение, которое может захватывать изображение с передней и задней камеры. Я пробую ваше приложение, но оно не работает на каком-то устройстве! –

ответ

9

Используйте это разрешения:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 

И вы можете создать экземпляр объекта камеры с помощью этого

Camera mycamera = Camera.open(); 

Вы можете попробовать метод описанный здесь, очень прост, если вы Простота:

http://developer.android.com/training/camera/photobasics.html

+0

спасибо за ответ. Я инициализирую камеру, и теперь я получаю новую ошибку. Мое редактирование – 113408

+0

@HamzaKarmouda вы установили разрешения в файле манифеста? – opc0de

+0

да, конечно. Я не знаю, почему он не может подключиться камера для обслуживания – 113408

0

Android не может использовать камеру без предварительного просмотра ... но, вы можете установить размер предварительного просмотра, как 1х1 пикселей, то вы не увидите его, и вы можете использовать камеру в любом случае.

0

Что касается вашей ошибки Fail to initialize camera, другой возможностью является то, что камера используется кем-то еще.

Смежные вопросы