-2

我在网上找到了这个程序,并想用在内部存储中创建新文件来替换它在外部存储中创建新文件的部分。如果您知道答案,请告诉我要编写的确切代码。我在这个网站上阅读了其他问题,它最终弄乱了程序。谢谢你。

布局

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >


<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/desc" />

</LinearLayout>

和java文件

   public class Main extends Activity implements OnClickListener {

private static final int TAKE_PICTURE = 0;
private Uri mUri;
private Bitmap mPhoto;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ((Button) findViewById(R.id.snap)).setOnClickListener(this);
    ((Button) findViewById(R.id.rotate)).setOnClickListener(this);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case TAKE_PICTURE:
        if (resultCode == Activity.RESULT_OK) {
            getContentResolver().notifyChange(mUri, null);
            ContentResolver cr = getContentResolver();
            try {
                mPhoto = android.provider.MediaStore.Images.Media.getBitmap(cr, mUri);
                ((ImageView)findViewById(R.id.photo_holder)).setImageBitmap(mPhoto);
            } catch (Exception e) {
                Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
            }
        }
    }
}

   @Override
  public void onClick(View v) {
    if (v.getId()== R.id.snap) {
        Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
        File f = new File(Environment.getExternalStorageDirectory(),  "photo.jpg");
        i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
        mUri = Uri.fromFile(f);
        startActivityForResult(i, TAKE_PICTURE);
    } else {
        if (mPhoto!=null) {
            Matrix matrix = new Matrix();
            matrix.postRotate(90);
            mPhoto = Bitmap.createBitmap(mPhoto , 0, 0, mPhoto.getWidth(), mPhoto.getHeight(), matrix, true);
            ((ImageView)findViewById(R.id.photo_holder)).setImageBitmap(mPhoto);
        }
    }
}

}

4

1 回答 1

1

不能,不拍这样的照片。您正在使用意图并从另一个应用程序拍摄照片。该应用程序无法访问您的内部存储器(内部存储器是每个应用程序)。您要么需要保存到外部存储上的公共目录,要么需要自己拍照。

于 2013-08-02T04:35:18.033 回答