Android 操作后调用onDestroy\u图像\u自动捕获
} 下面是一个扩展上述类的活动Android 操作后调用onDestroy\u图像\u自动捕获,android,Android,} 下面是一个扩展上述类的活动 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 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();
我的应用程序有一个调用摄像头并捕获图像的功能。
当我单击第2类中的按钮时,它调用祖先类(上一个)中的方法call_camera()
如您所见,call_camera()方法使用ACTION_IMAGE_捕获并将结果传递给onActivityResult()
我有两部手机来测试我的应用程序(galaxy S4和galaxy J3)
在galaxy J3上一切正常。
但是当我试着用galaxy S4编写代码时,
手机会在我保存图片后调用第1类中的onDestroy()
我认为没有理由调用onDestroy(),因为该活动仍在屏幕上
此外,如果我在创建时调用_camera()(而不是通过单击按钮)
它在galaxy S4上也能正常工作 拍摄图像时,相机会导致方向改变,此时您的活动会被破坏 这个类似的问题我在工作的时候也遇到了。 所以,为了停止定向,我使用了下面的代码 将这些添加到您的menifest文件中
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;
}
}
希望这些对您有所帮助。当您的活动被破坏时,摄像机会导致方向改变 这个类似的问题我在工作的时候也遇到了。 所以,为了停止定向,我使用了下面的代码 将这些添加到您的menifest文件中
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;
}
}
希望这些能帮助你