Android 選擇圖片 相冊選擇 馬上拍照

jopen 11年前發布 | 40K 次閱讀 Android Android開發 移動開發

public class MainActivity extends Activity implements OnClickListener {

private ImageView iv;
private int SELECT_PICTURE = 1; // 從圖庫中選擇圖片
private int SELECT_CAMER = 2; // 用相機拍攝照片
private Bitmap bmp;

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

    init();

}

private void init() {
    iv = (ImageView) findViewById(R.id.imageView1);
    iv.setOnClickListener(this);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Uri uri = data.getData();
        ContentResolver cr = this.getContentResolver();
        try {
            if (bmp != null) {
                bmp.recycle();
                bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        iv.setImageURI(uri);
    } else {
        Toast.makeText(MainActivity.this, "選擇圖片失敗,請重新選擇", Toast.LENGTH_SHORT)
                .show();
    }
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.imageView1:
        showChoosePhotoDialog();
        break;

    default:
        break;
    }
}

private void showChoosePhotoDialog() {
    CharSequence[] items = { "相冊", "相機" };
    AlertDialog dialog = new AlertDialog.Builder(this)
            .setTitle("選擇圖片來源")
            .setItems(items, new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    if (which == SELECT_PICTURE) {
                        Intent intent = new Intent(
                                MediaStore.ACTION_IMAGE_CAPTURE);
                        startActivityForResult(intent, SELECT_CAMER);
                    } else {
                        Intent intent = new Intent(
                                Intent.ACTION_GET_CONTENT);
                        intent.addCategory(Intent.CATEGORY_OPENABLE);
                        intent.setType("image/*");
                        startActivityForResult(intent, SELECT_PICTURE);
                    }
                }
            })
            .setNegativeButton("取消", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.cancel();
                }
            }).create();
    dialog.show();
}

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!