我有一个应用程序,我从一个捕获图像的教程中复制了MediaStore.ACTION_IMAGE_CAPTURE.当我在手机上运行应用程序时,我有一些奇怪的感觉.
即使我没有移动手机,相机应用程序本身也会在操作过程中翻转其方向几次.在返回教程应用程序之前,它会简要地进入横向模式.因此,教程应用程序在控制返回到它后会回到纵向模式,并且图像丢失.我尝试将相机活动的方向设置为横向,图像不会丢失.
但该应用程序的布局适用于纵向模式.或者,如果我在拍摄照片的同时横向握住相机,我可以在应用程序恢复焦点后转动手机,而不会丢失图像.
我在网上做了一些讨论.Stackoverflow上有人提到方向的改变引起了额外的调用onCreate." onCreate()被调用的原因是因为当您在纵向方向上调用相机活动时,它将改变方向并破坏您之前的活动." 我在调试模式下运行应用程序,在onCreate和onActivityResult方法中设置了断点.onCreate当我以肖像模式拍摄照片时,确实会被调用.调用的顺序是onCreate,onActivityResult,onCreate.如果我以横向模式拍摄照片(这是我的相机应用程序以任何方式结束的地方),onCreate不会被调用.现在我已经知道发生了什么,我该如何避免这个问题?这是应用程序现在的样子:
package com.example.testapp;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.app.WallpaperManager;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
public class CameraActivity extends Activity implements View.OnClickListener {
ImageButton ib;
Button b;
ImageView iv;
Intent i;
final static int cameraData = 0;
Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.photo_activity); …Run Code Online (Sandbox Code Playgroud)