2014-09-16 4 views
0

내 앱에서 사진을 찍으려면 휴대 전화에서 카메라 앱을 사용하고 있습니다. 사진을 찍은 후 그것은 내 응용 프로그램으로 돌아갑니다. 나는 그것이 다른 휴대폰에서 다르게 작동하는 것으로 나타났습니다. Galaxy s3에서는 사진을 찍은 후 사진을 보여 주며 사진을 저장 한 다음 (다시 내 앱으로 돌아가거나) 버리고 (카메라 앱으로 돌아갈 수있는) 옵션을 제공합니다. 문제는 화면이 회전 할 때 앱이 저장/삭제 화면이 나타나면 부서지기 때문입니다. 분쇄를 중지하는 유일한 방법은 화면을 회전시키지 않고 사진을 찍고 그대로 유지하는 것입니다.카메라 앱을 사용하는 Android

이 문제를 해결할 수 있습니까? 어쩌면 내가이 화면에서 회전을 허용하지 않을 것이라고 정의 할 수있는 방법이 있을까요?

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

    //Specify target file 
    Calendar cal = Calendar.getInstance(); 
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 

    newPicName = android.os.Environment.getExternalStorageDirectory() + "/"+app.APP_FOLDER + "/" + app.getSession()+ "_"+app.getDateTime()+ "_" +sdf.format(cal.getTime()) +".jpg"; 
    File imageFile = new File(newPicName); 
    Uri imageFileUri = Uri.fromFile(imageFile); 
    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageFileUri); 


    startActivityForResult(intent, 0); 

답변

0

당신은 당신이 매니페스트에 지정해야합니다 화면의 방향을 제한하려면 ... 예를 들면 :

<activity 
     android:name="com.xxx" 
     android:label="@string/xxx" 
     android:screenOrientation="portrait" > //this limits the screen to only portrait. 
    </activity> 

추가 정보 이 여기

코드입니다 나는 그것을 어떻게하는지 완벽하게 나를 위해 일한다. 다음 코드

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

//First I create a method to capture the image. 
private void captureImage() { 

    Intent i = new Intent("android.media.action.IMAGE_CAPTURE"); 
    File f = new File(Environment.getExternalStorageDirectory(), "profile.jpg"); 
    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); 
    mUri = Uri.fromFile(f); 
    startActivityForResult(i, TAKE_PICTURE); 

} 

//Then I handle the result. 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case TAKE_PICTURE://this is a constant defined in my instance variables. 
     if (resultCode == Activity.RESULT_OK) { 
      getContentResolver().notifyChange(mUri, null); 
      ContentResolver cr = getContentResolver(); 
      try { 
       mPhoto = android.provider.MediaStore.Images.Media.getBitmap(cr, mUri); 
      //set your photo in a screen… 
      } catch (Exception e) { 
       Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 
} 
+0

나는 화면을 회전 할 수 있습니다. – user2958571

+0

내 앱의 모든 화면에서 순환 게재를 사용 중지하는 방법을 찾았습니다. 내가 저장/폐기 화면을 제어 할 수 있었으면 좋겠어. – user2958571

0

시도 : onActivityResult

private File tempFile; 

    private static final int CAMERA_IMAGE = 1; 

    public void takePicFromCamera() { 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     if (tempFile != null) { 
      Log.i(""image Path : "", tempFile.getPath()); 
      Uri picUri = Uri.fromFile(tempFile); // convert path to Uri 
      intent.putExtra(MediaStore.EXTRA_OUTPUT, picUri); 
      Log.i("Picture Uri", " : " + picUri); 
     } 
     startActivityForResult(intent, MedicationConstants.CAMERA_IMAGE); 
    } 


    public void onActivityResult(int requestCode, int resultCode, final Intent intent) { 

     if (requestCode == MedicationConstants.CAMERA_IMAGE) { 
      new Handler().postDelayed(new Runnable() { 
            @Override 
            public void run() { 
             if (tempFile != null) { 
              //do anything with image file. Store in database. Or even should add functionality of dropping 
             } 
            } 
      }, 2000); 
     } 

    } 

에서 당신은 이미지 자르기의 기능을 추가해야합니다. simple-crop-image-lib을보십시오. 거의 모든 장치에서 사용할 수있는 훌륭한 라이브러리 &입니다.

감사합니다.

관련 문제