【问题标题】:Camera.takePicture() gives no callbackCamera.takePicture() 没有回调
【发布时间】:2014-09-12 05:46:23
【问题描述】:

已解决,查看评论 --- 我从来没有收到来自 Camera.takePicture() 的回调,我在 logcat 中看到了这一点。 什么不见​​了?如何让 takePicture()... 拍照?! 其中大部分是直接来自 Android 开发者相机指南。我想以编程方式拍照,无需任何预览或用户操作。使用内置的相机应用程序可以正常工作。 SDK 16.

在清单中我确实添加了:

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

代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button bTake =  (Button)findViewById(R.id.b_take);
    boolean boo = safeCameraOpen(camId);
    Camera.Parameters parameters = mCamera.getParameters();
    mCamera.setParameters(parameters);
    bTake.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {

             mCamera.takePicture(shutter, null, null, picture);

             Log.e(getString(R.string.app_name), "After takePicture");               
         }
     });

}// END onCreate 


/* Camera operations */

private ShutterCallback shutter = new ShutterCallback() {
    @Override
    public void onShutter() {
        Log.e(getString(R.string.app_name), "onShutter");
    }
};

private PictureCallback picture = new PictureCallback() {
    @Override
    public void onPictureTaken(byte[] arg0, Camera arg1) {
        Log.e(getString(R.string.app_name), "onPicTaken");
    }
};


/* Starting up and closing down*/

private boolean safeCameraOpen(int id) {
    boolean qOpened = false;
    try {
        releaseCamera();
        mCamera = Camera.open(id);
        qOpened = (mCamera != null);
    } catch (Exception e) {
        Log.e(getString(R.string.app_name), "failed to open Camera");
        e.printStackTrace();
    }
    return qOpened;    
}

private void releaseCamera() {
    if (mCamera != null) {
        ((Camera) mCamera).release();
        mCamera = null;
        Log.e(getString(R.string.app_name), "cam released");
    }
}}

【问题讨论】:

  • 问题解决了!需要 mCamera.startPreview() 才能使 mCamera.takePicture() 工作。即使预览没有其他用途。
  • 我没有得到任何异常。但无论如何。

标签: android callback camera


【解决方案1】:

试试:

mCamera.takePicture(shutter, picture, picture);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    相关资源
    最近更新 更多