相機

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Button camera;
private Button camera1;
private Button photo;
private ImageView cameraImage;
private Button clipping;

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

//第一步:找到所有的按鈕和圖片控件 ,按鈕設置點擊事件
private void initView() {
    //初始化控件
    camera1 = findViewById(R.id.camera);
    photo = findViewById(R.id.photo);
    clipping = findViewById(R.id.clipping);
    cameraImage = findViewById(R.id.cameraImage);
    //點擊事件
    camera1.setOnClickListener(this);
    photo.setOnClickListener(this);
    clipping.setOnClickListener(this);
    cameraImage.setOnClickListener(this);

}

//第二步:設置權(quán)限AndroidManifest.xml

//第三步:判斷點擊了那個按鈕
@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.camera:
            //第四步[1]獲取相機
            //[1] 相機的隱式回傳
            Intent intent1 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            //[2]添加意圖(android.intent.category.DEFAULT)
            intent1.addCategory(Intent.CATEGORY_DEFAULT);
            //[3]回傳 (注意:請求碼要和判斷的一樣)
            startActivityForResult(intent1, 0);
            break;
        case R.id.photo:
            //第六步:獲取相冊的圖片
            //[1]設置相冊的意圖(權(quán)限)
            Intent intent2 = new Intent(Intent.ACTION_PICK);
            //[2]設置顯式MIME數(shù)據(jù)類型
            intent2.setType("image/*");
            //[3]跳轉(zhuǎn)回傳
            startActivityForResult(intent2, 1);
            break;
        case R.id.clipping:
            //第七步:獲取相機圖片進行裁剪
            //獲取相機
            // [1]設置相冊的意圖(權(quán)限)
            Intent intent3 = new Intent(Intent.ACTION_PICK);
            // [2]設置顯式MIME數(shù)據(jù)類型
            intent3.setType("image/*");
            //[3]跳轉(zhuǎn)回傳
            startActivityForResult(intent3, 2);
            break;

    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //第五步:獲取回傳值
    switch (requestCode) {
        case 0:
            //得到拍攝圖片
            Bitmap bitmap = data.getParcelableExtra("data");
            //設置給imageView(這個時候就完成了 獲取拍照圖片)
            cameraImage.setImageBitmap(bitmap);
            break;
        case 1:
            //[1]得到圖片路徑
            Uri uri1 = data.getData();
            //[2]設置圖片(相冊獲取圖片完畢)
            cameraImage.setImageURI(uri1);
            break;
        case 2:
            //獲取相測 圖片裁剪
            //[1]從返回值中直接獲取路徑
            Uri uri2 = data.getData();
            //[2]調(diào)用裁剪的方法
            Intent crp= crop(uri2);
            //[3]再次回傳
            startActivityForResult(crp, 3);
            break;
        case 3:
            //[1]獲取bitmap
            Bitmap bmp = (Bitmap) data.getExtras().get("data");
            //[2](設置圖片)
            cameraImage.setImageBitmap(bmp);
            break;
    }
}

private Intent crop(Uri uri2) {
    /*
     * 裁剪需要的東西
     * 1.圖片
     * 2.裁剪框的大小 裁剪完后圖片大衅尬丁(我要裁成什么樣子的巡验?其實就是 裁剪完的大卸龇巍)
     * 3.圖片格式
     * 4.得到裁剪完的圖片
     * */
    // 裁剪圖片意圖
    Intent intent = new Intent("com.android.camera.action.CROP");
    //設置裁剪的數(shù)據(jù)源和數(shù)據(jù)類型
    intent.setDataAndType(uri2, "image/*");
    //可裁剪
    intent.putExtra("crop", "true");
    //裁剪框的比例,1:1
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    //裁剪后輸出圖片的尺寸大羞蠛怼(圖片展示到imageView的大小,不要太大了,不然會出錯)
    //參數(shù)(1.輸出的大小,大械簟)
    intent.putExtra("outputX", 250);
    intent.putExtra("outputY", 250);
    // 圖片格式(參數(shù):輸出格式,格式)
    intent.putExtra("outputFormat", "JPEG");
    // 必須加,否則返回值中找不到返回的值
    intent.putExtra("return-data", true);// 若為true則表示返回數(shù)據(jù)(圖片)
    return intent;
}
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末领曼,一起剝皮案震驚了整個濱河市余寥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悯森,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绪撵,死亡現(xiàn)場離奇詭異瓢姻,居然都是意外死亡,警方通過查閱死者的電腦和手機音诈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門幻碱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人细溅,你說我怎么就攤上這事褥傍。” “怎么了喇聊?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵恍风,是天一觀的道長。 經(jīng)常有香客問我,道長朋贬,這世上最難降的妖魔是什么凯楔? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮锦募,結(jié)果婚禮上摆屯,老公的妹妹穿的比我還像新娘。我一直安慰自己糠亩,他們只是感情好虐骑,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赎线,像睡著了一般廷没。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氛驮,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天腕柜,我揣著相機與錄音,去河邊找鬼矫废。 笑死盏缤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蓖扑。 我是一名探鬼主播唉铜,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼律杠!你這毒婦竟也來了潭流?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤柜去,失蹤者是張志新(化名)和其女友劉穎灰嫉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗓奢,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡讼撒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了股耽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片根盒。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖物蝙,靈堂內(nèi)的尸體忽然破棺而出炎滞,到底是詐尸還是另有隱情,我是刑警寧澤诬乞,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布册赛,位于F島的核電站钠导,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏击奶。R本人自食惡果不足惜辈双,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望柜砾。 院中可真熱鬧湃望,春花似錦、人聲如沸痰驱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽担映。三九已至废士,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蝇完,已是汗流浹背官硝。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留短蜕,地道東北人氢架。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像朋魔,于是被迫代替她去往敵國和親岖研。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • LY0911閱讀 161評論 0 1
  • 總思過去匆匆 來不及將回憶都忘記 又無端多幾分情緒刻骨銘心 過去活在現(xiàn)在的夢里 未來活在過去的夢里 現(xiàn)在活在未來的...
    阿甯Linn閱讀 189評論 0 0
  • 這個題 學生寫的是B是D警检? 這樣吧 正確答案是B就當D 正確答案是D就當B
    無所事事的盲從閱讀 120評論 0 0