打开自定义相机,拍照,保存图片,发送图片

|| 这次我有一个关于Android自定义摄像头的问题,而不是可通过Camera_intent访问的内置摄像头。我不允许使用那个。我正在尝试做的是允许用户将相机对准某物,然后在onOptionsItemMenu上选择\“发送\”。 我没有任何问题...单独实现这一点。如果我要求它通过单击按钮发送某些内容,它将发送。如果我告诉相机保存图片而不发送图片,它会保存。 当我尝试两者都做时,我遇到了一个问题。就目前而言,使用以下代码:
 public boolean onOptionsItemSelected(MenuItem item) {
        Intent i;
        File file2;
        camera.takePicture(null, mPictureCallback, mPictureCallback);
        switch (item.getItemId()) {

        case R.id.save:
            return super.onOptionsItemSelected(item);

        case R.id.send:

            file2 = new File(filename);
            i = new Intent(Intent.ACTION_SEND);
            i.putExtra(Intent.EXTRA_SUBJECT, \"Sample Picture\");
            System.out.println(\"file//\" + file2);
            i.putExtra(Intent.EXTRA_STREAM, Uri.parse(\"file//\" + file2));
            i.setType(\"image/png\");
            startActivity(Intent.createChooser(i, \"Email file\"));
            finish();
            return super.onOptionsItemSelected(item);
相机“单击”或“闪烁”,就像正在拍照一样,然后立即打开邮件客户端选择。当我选择要携带的商品时,Gmail表示该位置为空。但是,如果我删除启动电子邮件选择器的部分,则图像会正确保存并在那里。 几乎就像是跳过该相机采取的步骤。 我肯定解决方案很简单,我现在脑子刚硬,可能因为树木而看不到森林。 (如果那是类推的话)。 我可以在其他线程上运行相机零件吗? 我的想法是使用布尔值检查文件的存在和大小,但是我不确定如何使程序反复检查直到返回true。     
已邀请:
        我猜测可能发生的情况是您的回调发生在单独的线程上。因此,您的“打开邮件客户端”操作正在发生,而图像仍在保存。您应该尝试的是带有某种类型的标志,该标志可以告诉您是否正在发送或保存。在打开相机之前,请在onOptionsItemSelected中进行设置。然后,在mPictureCallback中执行您的ACTION_SEND意图(或保存动作)     

要回复问题请先登录注册