2014-09-28 67 views
-1

即使設備不支持該功能,我也想使用內置觸摸事件的相機應用程序拍照。如何在相機中使用相機應用程序

我想要實現的是以下。

1)當我打開本機或其他任何相機應用,

2)採取與觸摸事件,而不是相機按鈕(圖片這部分是什麼,我想開發)

下面的代碼我爲此嘗試。

我試圖在相機應用程序 上調用透明活動,當我在該活動上獲得觸摸事件時,我調用了Take_picture()函數。

但Take_picture中的camera.takePicture()函數不起作用。 (實際上它不調用jpegCallback功能)

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; 
    } 

} 

我不能讓我瞬間如何控制拍攝照片原生相機應用的任何信息。

請幫忙。

回答

0

如何即時控制原生相機應用拍攝照片。

你不行。歡迎您創建自己的相機應用程序,然後根據需要拍照。其他相機應用程序的作者可以隨意實現他們的相機應用程序,而且他們不必爲其他開發人員提供任何手段來指示何時以及如何拍攝照片。

但在Take_picture camera.takePicture()功能不起作用

您的應用程序應該崩潰,因爲你不應該有一個有效的Camera對象。一次只有一個應用程序可以使用相機。

+0

然後,是否有可能獲得打開的相機的實例,而不是camera.open()? – user2688423 2014-09-29 10:52:29

+0

@ user2688423:不,因爲那是在另一個應用程序的過程中,不是你的。 – CommonsWare 2014-09-29 10:57:45

相關問題