首页 文章

处理Camera Intent上的方向更改

提问于
浏览
1

我使用我的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 回答

  • 2

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

    android:configChanges="keyboardHidden|orientation|screenSize"
    

    谢谢 .

  • 1

    首先,您的代码中存在问题 .

    你问 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

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

    机器人:targetSdkVersion = “12”

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

相关问题