2014-09-28 1 views
-1

터치 이벤트가있는 카메라 앱을 사용하여 사진을 찍고 싶습니다.카메라 앱을 이용하여 사진을 촬영하는 방법

내가 알고 싶은 것은 다음과 같습니다.

1) 나는

2)이 부분은 내가 코드를 아래

가) 개발하고자하는 것입니다 대신 카메라 버튼의 터치 이벤트 (과 사진 촬영, 네이티브 또는 다른 카메라 앱을 실행하면 내가 이것을 시도해.

카메라 앱 투명성 활동 ( )을 호출하려고 시도했습니다. 해당 활동에서 터치 이벤트가 발생하면 Take_picture() 함수를 호출합니다.

그러나 Take_picture의 camera.takePicture() 함수가 작동하지 않습니다. 나는 즉시 걸릴 사진에 대한 기본 카메라 응용 프로그램을 제어하는 ​​방법에 대한 정보를 얻을 수 없었다

private void Take_picture(){ 

    camera = Camera.open(); 


    if(camera != null) 
    { 
     camera.takePicture(null, null, jpegCallback); 

    } 


} 


PictureCallback jpegCallback = new PictureCallback() { 
    public void onPictureTaken(byte[] data, Camera camera) { 
     new SaveImageTask().execute(data); 


    } 
}; 

private class SaveImageTask extends AsyncTask<byte[], Void, Void> { 

    @Override 
    protected Void doInBackground(byte[]... data) { 
     FileOutputStream outStream = null; 

     System.out.println("66666"); 
     // Write to SD Card 
     try { 
      File sdCard = Environment.getExternalStorageDirectory(); 
      File dir = new File (sdCard.getAbsolutePath() + "/camtest"); 
      dir.mkdirs();    

      String fileName = String.format("%d.jpg", System.currentTimeMillis()); 
      File outFile = new File(dir, fileName); 

      outStream = new FileOutputStream(outFile); 
      outStream.write(data[0]); 
      outStream.flush(); 
      outStream.close(); 

      //Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length + " to " + outFile.getAbsolutePath()); 

      //refreshGallery(outFile); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
     } 
     return null; 
    } 

} 

(실제로는 jpegCallback 함수를 호출하지 않습니다).

도와주세요.

답변

0

네이티브 카메라 앱을 제어하여 즉시 사진을 찍는 방법.

수 없습니다. 원하는대로 사진을 찍는 자신의 카메라 앱을 만들 수 있습니다. 다른 카메라 응용 프로그램을 만든 사람은 카메라 응용 프로그램을 원하는대로 구현할 수 있으며 다른 개발자가 사진을 찍는 방법과 방법을 지시 할 수단을 제공 할 필요가 없습니다.

그러나 Take_picture에서 camera.takePicture() 함수는 유효한 Camera 물체가 없어야로

이 앱이 충돌한다 작동하지 않습니다. 한 번에 하나의 앱만 카메라를 사용할 수 있습니다.

+0

그런 다음 열린 카메라의 인스턴스를 camera.open() 대신 가져올 수 있습니까? – user2688423

+0

@ user2688423 : 아니요, 이는 다른 앱의 프로세스가 아니기 때문에 발생했습니다. – CommonsWare

관련 문제