首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按下确定按钮后,默认摄像机活动未完成

按下确定按钮后,默认摄像机活动未完成
EN

Stack Overflow用户
提问于 2011-09-02 06:24:20
回答 4查看 7.8K关注 0票数 19

我从我的活动中调用默认摄像头,然后处理onActivityResult。我的代码在LG Ally上似乎运行得很好,它在拍摄照片时不需要确认。然而,当我在Nexus上运行相同的应用程序时,在返回到我的活动之前,它会提示我"Ok“、"Retake”或"Cancel“。当“取消”起作用时,返回到我的活动而不保存图片,“确定”似乎没有任何效果,甚至没有返回到我的活动。

我的代码如下:

代码语言:javascript
运行
复制
private void captureImage() {

    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        File path = new File(Environment.getExternalStorageDirectory().getPath() + "/Images/" + (new UserContextAdapter(this)).getUser() + "/");
        path.mkdirs();
        File file = new File(path, "Image_Story_" + mRowId.toString() + ".jpg");

        newImageUri = Uri.fromFile(file);

        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, newImageUri);

        startActivityForResult(intent, CAPTURE_IMAGE);
    }

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {

    switch (requestCode) {
    case CAPTURE_IMAGE:
        switch (resultCode ) {
        case 0:
            Log.i("CAPTURE", "Cancelled by User");
            break;
        case -1:
            mImageUri = newImageUri;
            setImageFromUri();
            }
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-06 22:44:59

我想我刚刚遇到了完全相同的问题。

如果保存图片的路径不正确,相机将不会返回到你的应用程序。一旦我确认了这个目录存在,一切就都正常了。确保该目录存在,然后它应该可以工作。

-编辑--

我刚刚看到,你调用path.mkdirs();,但我认为它不起作用。你可以在android文档中读到“注意这个方法不会在失败时抛出IOException。调用者必须检查返回值。”请务必检查该目录是否真的存在。

hth

票数 15
EN

Stack Overflow用户

发布于 2012-09-07 22:42:39

此外,如果您正在使用上面的Environment.getExternalStorageDirectory().getPath(),请确保您的应用程序具有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

希望这会有帮助=)

票数 1
EN

Stack Overflow用户

发布于 2013-02-11 14:21:24

请检查一下这个

案例1:

代码语言:javascript
运行
复制
Uri newImageUri = null;

File path = new File(Environment.getExternalStorageDirectory().getPath() + "/Images/");

path.mkdirs();

boolean setWritable = false;

setWritable = path.setWritable(true, false);

File file = new File(path, "Image_Story_" + System.currentTimeMillis() + ".jpg");

newImageUri = Uri.fromFile(file);

Log.i("MainActivity", "new image uri to string is " + newImageUri.toString());

Log.i("MainActivity", "new image path is " + newImageUri.getPath());            

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

intent.putExtra(MediaStore.EXTRA_OUTPUT, newImageUri);

startActivityForResult(intent, REQUEST_CODE_CAPTURE_IMAGE);

案例2:

代码语言:javascript
运行
复制
String fileName = "" + System.currentTimeMillis() + ".jpg";

ContentValues values = new ContentValues();

values.put(MediaStore.Images.Media.TITLE, fileName);

values.put(MediaStore.Images.Media.DESCRIPTION, "Image capture by camera");

values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");

Uri imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

Log.i("MainActivity", "new image uri to string is " + imageUri.toString());

Log.i("MainActivity", "new image path is " + imageUri.getPath());

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);

startActivityForResult(intent, REQUEST_CODE_CAPTURE_IMAGE);

在第一种情况下,我可以通过nexus上的摄像头保存图像: a.Image存储在自定义文件夹中。b.如果“System.currentTimeMillis()”更改为(“new Date().toString()”),图像不会保存,摄像机也不会返回到我的活动。(可能是因为“System.currentTimeMillis”没有空格,而“new Date().toString()”可能有一些特殊的字符和空格)在情况2中: a.图像存储在相机文件夹中

感谢所有人

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7277287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档