0

我有通過啓動ACTION_IMAGE_CAPTURE意圖打開相機一活動:卡圖像捕獲屏幕上,不能回到onActivityResult(安卓)

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

    SimpleDateFormat dateformat = new SimpleDateFormat("ddMMyy"); 


    File photo1 = new File(Environment 
      .getExternalStorageDirectory(), imageName); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo1)); 
    startActivityForResult(intent, 5); 

開始這個意圖它打開圖像捕獲屏幕,並經過有時在點擊捕捉按鈕後它不會返回到我的應用程序(onActivityResult),它會強制我再次拍攝一張圖像,並且只有當我點擊後退按鈕時纔會關閉此屏幕。

我在調試時在OnActivityResult中放置了一個斷點,它不會停止在這個方法中。

回答

0

下面是示例應用程序,它提供了從使用相機或圖庫中選擇圖像的選項,並且還允許選擇裁剪圖像。我希望這正是你想要的。

請參閱本https://github.com/lorensiuswlt/AndroidImageCrop

其開源下載和探索。

+0

它適合你嗎? – juned

0

這裏是我的相機意圖代碼。它完美的作品,你可以嘗試使用它。

import android.app.Activity; 
import android.app.Dialog; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.Toast; 

public class PlayMenuActivity extends Activity implements OnClickListener { 

    Intent intent; 
    ImageButton cameraBtn, galleryBtn, maleBtn, femaleBtn; 
    static Bitmap photo; 
    Dialog dialog; 
    static String gender; 
    MediaPlayer mp; 

    protected static final int PHOTO_PICKED = 0; 
    private static final int CAMERA_REQUEST = 1337; 
    private static final int SELECT_PHOTO = 100; 
    private static final String TEMP_PHOTO_FILE = "tempPhoto.jpg"; 
    protected boolean circleCrop = true; 
    private final static String TAG = "GetImageFromGalleryActivity"; 


    // values for scaling image 
    protected int outputX = 320; 
    protected int outputY = 480; 
    protected int aspectX = 2; 
    protected boolean scale = true; 
    protected int aspectY = 3; 
    protected boolean return_data = false; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.i("hello", "oncreate PlayMenu"); 
     setContentView(R.layout.play_menu_screen);//setting layout 
     //Image Buttons on activity screen 
     cameraBtn = (ImageButton) findViewById(R.id.cameraBtn_id); 
     galleryBtn = (ImageButton) findViewById(R.id.galleryBtn_id); 
     cameraBtn.setOnClickListener(this); 
     galleryBtn.setOnClickListener(this); 
     // sound played when button clicked 
     mp = MediaPlayer.create(this, R.raw.click); 



    } 

    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.cameraBtn_id: 
      // camera intent for starting camera 
      Intent cameraIntent = new Intent(
        android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      cameraIntent.putExtra("crop", "true"); 
      cameraIntent.putExtra("aspectX", aspectX); 
      cameraIntent.putExtra("aspectY", aspectY); 
      cameraIntent.putExtra("outputX", outputX); 
      cameraIntent.putExtra("outputY", outputY); 
      cameraIntent.putExtra("scale", scale); 
      cameraIntent.putExtra("category", "camera"); 
      startActivityForResult(cameraIntent, CAMERA_REQUEST); 

      break; 

     case R.id.galleryBtn_id: 
      // calling GalleryActivity for picking image from gallery 
      intent = new Intent(PlayMenuActivity.this, GalleryActivity.class); 

      startActivity(intent); 
      break; 

     default: 
      break; 
     } 

    } 

    /* creates bitmap of the captured photo */ 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     // Log.i("hello", "REQUEST cALL"); 
     //if a camera request is made and resultcode matches then bitmap is created 
     if (requestCode == CAMERA_REQUEST || resultCode == Activity.RESULT_OK) { 
      Log.i("hello", "REQUEST cALL"); 
      try { 
       Log.i("hello", "Try Call"); 
       Bitmap bMap = (Bitmap) data.getExtras().get("data");//creating bitmap 


       photo = bMap; 
       Intent intent = new Intent(PlayMenuActivity.this, 
         ShowActivity.class); 
       intent.putExtra("category", "camera");//adding category selected ie camera 
       startActivity(intent); 

      } catch (Exception e) { 
       Log.i("hello", "Exception" + e.getMessage()); 
      } 

     } else { 
      // Log.i("hello", "Else call"); 

      Toast.makeText(PlayMenuActivity.this, "Picture NOt taken", 
        Toast.LENGTH_LONG).show(); 
     } 

    } // fn 



}// class 

希望這會有所幫助。

0

這是非常晚,但這裏的問題可能會丟失讀/寫權限。我自己有這個問題,它必須與我想要將圖像文件放入我自己的應用程序文件夾中,相機應用程序無法訪問該文件夾。

爲了安全起見,當在應用程序之間共享文件時,請考慮使用Environment.getExternalStoragePublicDirectory()而不是Environment.getExternalStorageDirectory()