2014-06-22 44 views
3

该应用程序的目的是捕捉照片并使其出现在屏幕上。我已将画面旋转锁定为肖像,但在照片拍摄并附加到应用程序屏幕后,手机的屏幕可以再次旋转,如果发生这种情况,图像会消失。我如何解决这个问题?这里是代码使用相机的Android应用程序,屏幕旋转后照片消失

public class MainActivity extends Activity { 

private static String logtag = "CameraApp"; 
private static int TAKE_PICTURE = 1; 
private Uri imageUri; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button cameraButton = (Button)findViewById(R.id.button_camera); 
    cameraButton.setOnClickListener(cameraListener); 
} 

private OnClickListener cameraListener = new OnClickListener() { 
    public void onClick(View v) { 
     takePhoto(v); 
    } 
}; 

public void takePhoto(View v) { 
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    File photo = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "pic.jpg"); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); 
    imageUri = Uri.fromFile(photo); 
    startActivityForResult(intent, TAKE_PICTURE); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch(requestCode) { 
    case 1: 
     if(resultCode == Activity.RESULT_OK) { 
      Uri selectedImage = imageUri; 
      getContentResolver().notifyChange(selectedImage, null); 
      ImageView imageView = (ImageView)findViewById(R.id.image_view_camera); 
      ContentResolver cr = getContentResolver(); 
      Bitmap bitmap; 
      try { 
       bitmap = android.provider.MediaStore.Images.Media.getBitmap(cr, selectedImage); 
       imageView.setImageBitmap(bitmap); 
       Toast.makeText(MainActivity.this, selectedImage.toString(), Toast.LENGTH_LONG).show(); 
      } catch(Exception e) { 
       Toast.makeText(MainActivity.this, "failed to load", Toast.LENGTH_LONG).show(); 
       Log.e(logtag, e.toString()); 
      } 
     } 
    } 
    } 
} 

回答

-3

其速战速决..它doent真正解决这个问题,但美国可以通过将此代码添加到您的清单您的MainActivity位于改变方向停止屏幕..只是加入这一行..

<activity 
     ... 
     android:screenOrientation="portrait" 
     ...> 
</activity> 
+0

即使这不是为我工作:( – NarendraJi

+0

这个不列入工作 – azmuhak

3

当更改屏幕方向时,系统将重新启动活动(调用onDestroy(),然后onCreate())。所以我相信你需要在重新启动后再次设置图像。

此链接http://developer.android.com/guide/topics/resources/runtime-changes.html有一些关于如何处理这个问题的有用信息。最简单的方法可能是将图像uri存储在onSaveInstanceState()中,然后在onRestoreInstanceState()中恢复图像。

0

组ID为您的每一个意见,以防止数据丢失时,画面切换方向

  1. 创建值的XML文件,并调用它ids.xml
  2. 创建你的IDS有这样

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
        <item name="button_1_id" type="id"/> 
        <item name="button_2_id" type="id"/> 
        <item name="imageView_id" type="id"/> 
        .... 
    </resources> 
    
  3. 设置ID:

    button_1.setId(R.id.button_1_id); 
    ... 
    
相关问题