2016-07-22 5 views
0

이미지를 성공적으로 캡처 한 카메라 앱을 하나 시도했지만 ImageView에 표시되지 않습니다. 해결 방법을 알려주십시오. 사진을 찍고 체크 표시 버튼을 선택하면 이미지를 앱에서 ImageView로 다시 표시하는 동안 오류가 발생하여 실행됩니다. 캡처 된 이미지가 이미지보기에 표시되지 않습니다.

다음은 코드

public class MainActivity extends AppCompatActivity { 

ImageView result; 

static final int REQEST_IMAGE_CAPTURE=1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    Button click= (Button) findViewById(R.id.camera); 
    result= (ImageView) findViewById(R.id.imageView); 

    click.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      if(takePictureIntent.resolveActivity(getPackageManager())!=null) 
      { 
       startActivityForResult(takePictureIntent,REQEST_IMAGE_CAPTURE); 
      } 

     } 
    }); 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode==REQEST_IMAGE_CAPTURE && requestCode == RESULT_OK){ 
     Bundle extras=data.getExtras(); 
     Bitmap imageBitmap =(Bitmap)extras.get("data"); 
     result.setImageBitmap(imageBitmap); 
    } 
} 

}

입니다 그리고 여기에 미리 도움말

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Capture Image" 
    android:id="@+id/camera" 
    android:layout_marginBottom="68dp" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:minWidth="300dp" 
    android:minHeight="300dp" 
    /> 

감사에 대한 XML 파일입니다. 모든

+0

targetSdk는 무엇입니까? – Nisarg

+0

onActivityResult()에서 if 조건을 수정하십시오. if (requestCode == REQEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {' –

+0

API 레벨 15 이상 –

답변

0

첫째, 당신이 필요한 모든 사용자 의 AndroidManifest.xml의 권한이 보증 :

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

다음보십시오 : 당신은을 저장할 경로를 정의

을 그림 :

String path = Environment.getExternalStorageDirectory() + "/path/image.jpg"; 

1) 다음 방법을 사용하십시오. 카메라 호출 :

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.i("MakeMachine", "resultCode: " + resultCode); 
     switch (resultCode) { 
      case 0: 
       Log.i("PhotoApp", "User cancelled"); 
       break; 
      case -1: 
       onPhotoTaken(); 
       break; 
     } 
    } 

3) 사용자가 사진을 촬영하거나 취소 여부 (카메라의 활동 결과를 캡처하려면

protected void startCameraActivity() { 
     File file = new File(path); 
     Uri outputFileUri = Uri.fromFile(file); 

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

     startActivityForResult(intent, 0); 
    } 

2))로부터 결과를 분석하기 위해 다음 메소드를 구현

protected void onPhotoTaken() { 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inSampleSize = 4; 
     Bitmap bitmap = BitmapFactory.decodeFile(path, options); 
     image.setImageBitmap(bitmap); 
    } 
+0

감사하지만 그림 저장 실패 –

+0

안녕하세요 Nitin. 업데이트 된 게시물을 확인하십시오! 장치 저장소 (사용 권한)를 다루는 첫 번째 기본 요구 사항을 추가하지 않았습니다. 감사합니다. –

+0

같은 문제가 여전히 있습니다 ..... –

관련 문제