2017-03-02 1 views
0
public abstract class Write_MyArticle extends AppCompatActivity{ 


public Button btn_plus, btn_post, btn_delete; 
public EditText edit_title, edit_contents; 
public Uri imageUri; 
public String absolutePath =null; 
public ImageView image; 
public RelativeLayout layout; 
public Context mContext; 
public Activity activity; 
public Bitmap imageBitmap; 

public final int PICK_FROM_CAMERA = 900; 


public void onDestroy(){ 
    super.onDestroy(); 
    Log.d("message", " passing onDestroy"); 
    if(imageBitmap != null && imageUri != null){ 
     Log.d("message", "delete picture in gallery "); 
     getContentResolver().delete(imageUri, null,null); 
    } 
    imageBitmap = null; 
    imageUri = null; 
} 

protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    init(); 
    mContext = this; 
    activity = this; 
    // call_camera(); 
} 

public void call_camera(){ 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(intent, PICK_FROM_CAMERA); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(requestCode, resultCode, data); 


    Log.d("message", "took picture "); 

    if(resultCode != RESULT_OK) 
     return; 

    if(requestCode == PICK_FROM_CAMERA){ 
     //선택한 사진의 uri 
     imageUri = data.getData(); 

     Log.d("message", "URI : "+imageUri); 
     // 선택한 사진의 절대경로 구하는 것 
     Cursor c = this.getContentResolver().query(imageUri, null, null, null, null); 
     c.moveToNext(); 
     absolutePath = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA)); 


     Log.d("message", "absolute path of the picture : "+absolutePath); 

     imageBitmap = CameraUtil.resizeBitmap(absolutePath); 
     imageBitmap = CameraUtil.fixOrientation(imageBitmap, absolutePath); 

     Log.d("메시지", "path : "+imageUri.getPath()); 
     Glide.with(this).load(imageUri).into(image); 
     btn_plus.setVisibility(View.GONE); 
     layout.setVisibility(View.VISIBLE); 
    } 
} 

public abstract void init(); 

} 아래통화들의 OnDestroy 자동

public class Activity_MyDiary extends Write_MyArticle implements View.OnClickListener{ 

private final int DIARY_TYPE = 1; 
private String title, comments; 



public void init(){ 
    setContentView(R.layout.activity_feed_mydiary); 
    activity = this; 
    mContext = this; 
    btn_plus = (Button)findViewById(R.id.btn_feed_myDiary_plus); 
    btn_plus.setOnClickListener(this); 
    btn_post = (Button)findViewById(R.id.btn_feed_myDiary_post); 
    btn_post.setOnClickListener(this); 
    btn_delete = (Button)findViewById(R.id.btn_feed_myDiary_delete); 
    btn_delete.setOnClickListener(this); 
    edit_title = (EditText)findViewById(R.id.edit_feed_myDiary_title); 
    edit_contents = (EditText)findViewById(R.id.edit_feed_myDiary_contents); 
    image = (ImageView)findViewById(R.id.image_feed_myDiary_captured); 
    layout = (RelativeLayout)findViewById(R.id.layout_feed_myDiary_image); 

} 


public void onClick(View v){ 

    switch (v.getId()){ 

     case R.id.btn_feed_myDiary_plus: 
      call_camera(); 
      break; 

     case R.id.btn_feed_myDiary_post: 


      if(absolutePath == null){ 
       Toast.makeText(mContext, "사진이 없습니다", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      if(edit_title.getText().toString().equals("")){ 
       Toast.makeText(mContext, "제목을 작성해주세요", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      if(edit_contents.getText().toString().equals("")){ 
       Toast.makeText(mContext, "내용을 입력해 주세요", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      title = edit_title.getText().toString(); 
      comments = edit_contents.getText().toString(); 

      DB_SendPicture db_sendPicture = new DB_SendPicture(this, this); 
      db_sendPicture.setOnResultPicture(sendPictureListener); 
      db_sendPicture.execute(imageBitmap); 


      break; 

     case R.id.btn_feed_myDiary_delete: 
      if(imageUri == null){ 
       Toast.makeText(mContext, "사진이 없습니다", Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      getContentResolver().delete(imageUri, null,null); 
      call_camera(); 
      break; 
    } 


} 

내 애플 위의 클래스를 확장 카메라를 호출하고 이미지를 캡처하는 기능이있는 활동이다. 나는 클래스 2 번에서 버튼을 클릭하면 는, 그것은 당신이 볼 수 있듯이 (위 한) , call_camera() 메소드가 ACTION_IMAGE_CAPTURE을 사용하여 onActivityResult()

I에 결과를 전달 조상 클래스의 메소드 call_camera()를 호출 내 애플 (갤럭시 S4와 갤럭시 J3)을 테스트하기 위해 2 대의 휴대폰을 가지고있다. 갤럭시 J3에는 모든 것이 잘 동작한다. 하지만 ... 내가 갤럭시 S4와 코드를 시도했을 때, 전화 번호를 전화로 전화 onDestroy() 그림 1 저장 후 쓸 수 있습니다.

나는 활동이 여전히 화면에 있기 때문에 onDestroy()를 호출 할 이유가 없다고 생각합니다. 나는에 call_camera()를 호출하면

또한,에 ... 그것은 너무 은하 S4에 잘 작동 (안 버튼을 클릭에서) 만들

답변

0

이미지 카메라를 캡처하는 활동이 파괴 도착 시간을 방향 변경이 발생하는 동안 .

이 비슷한 문제는 작업하는 동안 작업하면서 얻었습니다. 그래서 방향을 멈추기 위해 아래 코드를 사용했습니다.

menifest 파일에 추가하십시오.

<activity 
    android:name=".CameraActivity" 
    android:screenOrientation="portrait" 
    android:configChanges="orientation|keyboardHidden|screenSize" 
    > 
</activity> 

이러한 정보가 도움이 되었기를 바랍니다.

+0

감사합니다 !!!!!!!!!!!! – heesu