如何使用相机应用程序内拍照

时间:2014-09-28 14:25:17

标签: android android-camera

即使设备不支持该功能,我也想使用带有触摸事件的设备内置的相机应用拍照。

我想要实现的是跟随。

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

}

我无法获取任何信息如何控制原生相机应用以立即拍照。

请帮忙。

1 个答案:

答案 0 :(得分:0)

  

如何控制原生相机应用程序即时拍照。

你做不到。欢迎您创建自己的相机应用程序,随时拍照。欢迎其他相机应用程序的作者实现他们想要的相机应用程序,并且他们不必为其他开发人员提供任何方式来决定拍摄照片的时间和方式。

  

但是Take_picture中的camera.takePicture()函数不起作用

您的应用应该崩溃,因为您不应该有一个有效的Camera对象。一次只能有一个应用程序使用相机。