拍照期间出错

时间:2012-06-26 08:44:01

标签: android

我正在编写一个必须拍照并将其发送到网络服务的应用程序。 我用的代码是:

i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
outputFileUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/appicture.jpg"));
Log.i("URI", outputFileUri.toString());
i.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(i, cameraData);

URI看起来像:

  

文件:///sdcard/appicture.jpg

但如果我在i.putExtra中放入“outputFileUri”var,我的应用就退出了。 如果没有,我可以拍照,但我无法获取她的URI,然后无法将其发送到我的网络服务。

编辑1: 错误日志(在活动重新列表上)

  

06-26 09:17:46.108:I / Cam错误(699):java.lang.NullPointerException

编辑2: 如果我删除“outputFileUri”,我正确得到了图像。但是,我无法将位图转换为文件以便能够发送它。

if(resultCode == RESULT_OK){

            Bundle extras = data.getExtras();
            _bmp = (Bitmap) extras.get("data"); 

        }

编辑3:

问题来自

  

_bmp =(Bitmap)extras.get(“data”);

图片正确保存在SD卡中。

3 个答案:

答案 0 :(得分:3)

在Manifest中添加 WRITE_EXTERNAL_STORAGE 权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

修改  如果您在Intent中传递Image Uri以捕获图像,则获取图像,如onActiityResult中所示:

@Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
        if (requestCode == cameraData) {  
            File picture = new File(Environment.getExternalStorageDirectory() + "/appicture.jpg"); 
            Uri imguri=Uri.fromFile(picture);
            }
        super.onActivityResult(requestCode, resultCode, data);  
    }  

如果您希望将图像作为onActiityResult中的数据,则将Camra作为:

启动
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
startActivityForResult(intent, cameraData);  
onActivityResult:

 onActivityResult(int requestCode, int resultCode, Intent data) {  
        if (requestCode == 1) {  
            if (resultCode == cameraData) {  
                Bundle extras = data.getExtras();
                _bmp = (Bitmap) extras.get("data"); //Get data here

            }  
        }  
}  

答案 1 :(得分:1)

请在清单文件

中添加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

快乐编码..

答案 2 :(得分:1)

如果您已添加权限且路径正确。您可以尝试删除路径末尾的“.jpg”