相关疑难解决方法(0)

Android Camera:数据意图返回null

我有一个包含多个活动的android应用程序.

在其中一个我正在使用一个按钮,它将调用设备摄像头:

public void onClick(View view) {
    Intent photoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(photoIntent, IMAGE_CAPTURE);
}
Run Code Online (Sandbox Code Playgroud)

在同一个活动中,我调用OnActivityResult图像结果的方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == IMAGE_CAPTURE) {
        if (resultCode == RESULT_OK) {
            Bitmap image = (Bitmap) data.getExtras().get("data");
            ImageView imageview = (ImageView) findViewById(R.id.pic);
            imageview.setImageBitmap(image);
        } else if (resultCode == RESULT_CANCELED) {
            Toast.makeText(this, "CANCELED ", Toast.LENGTH_LONG).show();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是intent data是null并且OnActivityResult方法直接转到,(resultCode == RESULT_CANCELED)并且应用程序返回到先前的avtivity.

如何修复此问题,并在调用相机后,应用程序返回当前活动,其中包含ImageView将包含拍摄的照片?

谢谢

android android-camera android-imageview

128
推荐指数
5
解决办法
10万
查看次数

如何在数据文件夹中将相机结果作为uri?

我正在创建一个应用程序,我想在其中捕获图像,然后我想将该图像作为附件发送到电子邮件中.

我正在使用android.provider.MediaStore.ACTION_IMAGE_CAPTUREintent动作打开相机,我将文件的Uri作为参数EXTRA_OUTPUT传递给图像以将图像恢复到文件中.这是完美的工作,如果我使用external storage urias作为a 我能够获取捕获的图像, EXTRA_OUTPUT但如果我使用数据文件夹uri它不工作,相机没有关闭,它的所有按钮都不工作.

这是我在外部存储目录中获取结果的代码

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File out = Environment.getExternalStorageDirectory();
out = new File(out, imagename);
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));
startActivityForResult(i, CAMERA_RESULT);
Run Code Online (Sandbox Code Playgroud)

此代码用于获取数据文件夹中的图像

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File out = getFilesDir();
out = new File(out, MyPharmacyOptions.PRESCRIPTION_IMAGE_NAME);
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out));
startActivityForResult(i, CAMERA_RESULT);
Run Code Online (Sandbox Code Playgroud)

我知道第三个应用程序无法访问数据文件夹,因此可能会导致问题,因此我创建了一个内容提供程序来共享该文件.

这是我的内容提供课程

public class MyContentProvider extends ContentProvider {
    private static final String Tag = RingtonContentProvider.class.getName();
    public static final Uri CONTENT_URI = Uri
            .parse("content://x.y.z/");
    private static final HashMap<String, …
Run Code Online (Sandbox Code Playgroud)

android android-contentprovider android-camera

65
推荐指数
3
解决办法
8万
查看次数

我的Android相机Uri返回一个空值,但三星修复已经到位,有帮助吗?

所以我知道相机在三星设备上的问题.您需要在调用相机意图之前创建一个Uri,如下所示:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, m_username);
mImageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
Run Code Online (Sandbox Code Playgroud)

此示例为相机创建一个Uri来存储数据.我的应用程序在两个位置具有相机功能.两者都是相同的(直接复制粘贴),但在一个活动中,mImageUri对象在相机处理期间变为空,而在另一个活动中它不会.后者工作正常,但前者给出一个空值,这反过来阻止我保存图像,预览它等.我将提供下面的onResult代码:

case CAMERA_PIC_REQUEST :
if(resultCode == RESULT_OK) {
    if(intent != null) {
        //For non-Samsung devices
        Log.e("Intent value:", intent.toString());
        mImageUri = intent.getData();
    }

    mAvatar = BitmapStatic.createImage(mImageUri, this);
    Drawable draw = new BitmapDrawable(getResources(), mAvatar);
    m_photoButtonE.setImageDrawable(draw);
    m_imageChanged = true;
}
break;
Run Code Online (Sandbox Code Playgroud)

以上示例来自工作活动.以下是不起作用的活动:

//On pressing the "Take Photo" button:
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, mUsername); …
Run Code Online (Sandbox Code Playgroud)

camera android android-camera

20
推荐指数
1
解决办法
2万
查看次数

三星S3中的onActivityResult(int requestCode,int resultCode,Intent data)中的相机意图数据为null

问题:onActivityResult(int requestCode, int resultCode, Intent data) 在Samsung S3中获取了相机意图的数据 .但在其他一些设备上运行良好.我自定义了用于获取数据的代码,并在Web中搜索了这个问题但没有任何有用的东西

代码:

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == TAKE_CAMERA && data != null && data.getData() != null)  

           else if (requestCode == TAKE_CAMERA) {
        if (resultCode != RESULT_OK) return;
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(tempFileUri, "image/*");

        intent.putExtra("outputX", 90);
        intent.putExtra("outputY", 90);
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        intent.putExtra("scale", true);
        intent.putExtra("return-data", true);
        startActivityForResult(intent, CROP_CAMERA);
    } else if (requestCode == CROP_CAMERA && data != null) {
        Bitmap photo = data.getExtras().getParcelable("data"); …
Run Code Online (Sandbox Code Playgroud)

android

13
推荐指数
1
解决办法
2万
查看次数