处理Camera Intent上的方向更改

时间:2013-02-22 08:34:10

标签: android android-camera

我使用我的Activity中的内置相机应用程序来拍照。问题是,如果方向改变并重新绘制我的活动,我无法处理从相机Intent返回的数据,我试图搜索同样的问题,但它似乎让我更加困惑。我是去捆绑的东西还是去OnConfigurationChanged()我已经在Manifest文件中的活动标签中放置了android:configChanges =“orientation”,这个特定的活动调用了摄像头意图,但问题似乎仍然存在。任何人都可以指导我一个解决方案。

这是我的代码:

if(i==0){
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    if( requestCode == 1337 && resultCode== Activity.RESULT_OK){
        Bundle extras = data.getExtras();

        if (extras != null){
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 1;
            options.inPurgeable = true;
            options.inInputShareable = true;
            thumbnail = (Bitmap) data.getExtras().get("data");
            // imgview.setImageBitmap(thumbnail);
            image(thumbnail);

        }else{
            Toast.makeText(CreateProfile.this, "Picture NOt taken", Toast.LENGTH_LONG).show();
        }
        super.onActivityResult(requestCode, resultCode, data);     
    }
}

3 个答案:

答案 0 :(得分:2)

尝试将此属性添加到activity文件中的Manifest

android:configChanges="keyboardHidden|orientation|screenSize"

感谢。

答案 1 :(得分:2)

首先,您的代码存在问题。

您询问if (extras != null){是否仍然可以从数据thumbnail = (Bitmap) data.getExtras().get("data");获取位图此行应

thumbnail = (Bitmap) extras.get("data");

其次,不要使用android:configChanges,它会弄乱很多其他东西,大多数应用都不应该使用它。

如果您的意思是在获取数据后更改方向,则使用saveInstanceState可以正常工作。尝试这样的东西,只需将你需要的数据放在outState Bundle中,然后在onRestoreInstance方法中取回它

@Override
protected void onSaveInstanceState(Bundle outState) {
 outState.putAll(extras);
 super.onSaveInstanceState(outState);

}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {

 super.onRestoreInstanceState(savedInstanceState);
 extras.putAll(savedInstanceState);
}

答案 2 :(得分:1)

如果您的应用的目标sdk大于12,请将其更改为12并再次尝试pelase。

机器人:targetSdkVersion = “12”

并且也不要忘记将android:configChanges =“orientation | keyboardHidden”添加到清单中的活动行