приложение, использующее камеру на телефоне, постоянно вылетает

Я пытался написать базовые приложения, которые используют встроенную камеру Android, чтобы сделать снимок, а затем отобразить изображение. Приложения, которые я пишу, продолжают падать, когда я пытаюсь отобразить изображение. Я даже скачал проект, который нашел в Интернете здесь http://www.techrepublic.com/blog/android-app-builder/androids-camera-intent-makes-taking-pics-a-snap/, но даже это тоже разбилось на моем телефоне. Я опубликую код здесь; Что-то не так с моим телефоном и как мне это исправить? Я использую Android 4.1.1 на своем Galaxy S3.

package com.authorwjf.camera;


    import java.io.File;

    import android.app.Activity;
    import android.content.ContentResolver;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.Matrix;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.provider.MediaStore;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.Toast;
    import com.authorwjf.camera.R;


public class Main extends Activity implements OnClickListener {

private static final int TAKE_PICTURE = 0;
private Uri mUri;
private Bitmap mPhoto;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ((Button) findViewById(R.id.snap)).setOnClickListener(this);
    ((Button) findViewById(R.id.rotate)).setOnClickListener(this);
}

    @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case TAKE_PICTURE:
        if (resultCode == Activity.RESULT_OK) {
            getContentResolver().notifyChange(mUri, null);
            ContentResolver cr = getContentResolver();
            try {
                mPhoto = android.provider.MediaStore.Images.Media.getBitmap(cr, mUri);
                ((ImageView)findViewById(R.id.photo_holder)).setImageBitmap(mPhoto);
            } catch (Exception e) {
                Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
            }
        }
    }
}


    @Override
public void onClick(View v) {
    if (v.getId()== R.id.snap) {
        Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
        File f = new File(Environment.getExternalStorageDirectory(),  "photo.jpg");
        i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
        mUri = Uri.fromFile(f);
        startActivityForResult(i, TAKE_PICTURE);
    } else {
        if (mPhoto!=null) {
            Matrix matrix = new Matrix();
            matrix.postRotate(90);
            mPhoto = Bitmap.createBitmap(mPhoto , 0, 0, mPhoto.getWidth(), mPhoto.getHeight(), matrix, true);
            ((ImageView)findViewById(R.id.photo_holder)).setImageBitmap(mPhoto);
        }
    }
}

}


person AbhishekSaha    schedule 31.07.2013    source источник
comment
А ваш логкэт говорит что?   -  person 323go    schedule 31.07.2013


Ответы (1)


Вы упомянули разрешение на использование системной камеры в XML-манифесте Android?

person Sachin Gadagi    schedule 31.07.2013
comment
Я упомянул разрешение, и приложение все еще падает - person AbhishekSaha; 31.07.2013