2014-09-28 108 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