2015-08-20 16 views
1

我試圖做一個簡單的攝像頭應用程序,捕捉圖像並查看圖像中的ImageView: 我想這個代碼在MainActivity:爲什麼一個模糊的圖像出現在一個簡單的android相機應用程序?

ImageView myImageView; 

public void myButtonCamera (View view){ 
    Intent cameraIntent = new Intent (android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(cameraIntent, 10); 

} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(requestCode,resultCode,data); 
    if (resultCode == RESULT_OK){ 
     if (requestCode == 10){ 
      Bitmap cameraCapture; 
      cameraCapture = (Bitmap)data.getExtras().get("data"); 
      myImageView.setImageBitmap(cameraCapture); 
     } 
    } 

} 

該應用的工作原理,並拍攝照片,但模糊後的圖像在ImageView中查看它。 我試圖將ImageView的高度和寬度屬性設置爲wrap_content,並且在測試應用程序之後,我注意到捕獲的圖像分辨率非常小!由於觀看圖像的大小非常小!

回答

5

我注意到,捕獲的圖像分辨率非常小!

這就是你的代碼所要求的。引用the documentation for ACTION_IMAGE_CAPTURE

調用者可以通過一個額外的EXTRA_OUTPUT爲了控制這個圖像將被寫入。如果EXTRA_OUTPUT不存在,則在額外字段中將小圖像作爲位圖對象返回。

如果你想要一個全分辨率圖像,使用EXTRA_OUTPUT,表示你想上哪兒相機應用寫的全分辨率圖像外部存儲文件:

package com.commonsware.android.camcon; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import java.io.File; 

public class CameraContentDemoActivity extends Activity { 
    private static final int CONTENT_REQUEST=1337; 
    private File output=null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    File dir= 
     Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); 

    output=new File(dir, "CameraContentDemo.jpeg"); 
    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output)); 

    startActivityForResult(i, CONTENT_REQUEST); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, 
            Intent data) { 
    if (requestCode == CONTENT_REQUEST) { 
     if (resultCode == RESULT_OK) { 
     Intent i=new Intent(Intent.ACTION_VIEW); 

     i.setDataAndType(Uri.fromFile(output), "image/jpeg"); 
     startActivity(i); 
     finish(); 
     } 
    } 
    } 
} 

(從this sample project

+1

對不起,如果我聽起來非常業餘。我怎麼做? –

+1

@HadiAghandeh:查看一些示例代碼的更新答案。 – CommonsWare

+0

太棒了!謝謝 – TutorialsBee

相關問題