天天看點

Android調用系統相機以及拉取本地相冊的功能實作以及代碼分析

現在Android開發的初學者們經常會用到調用手機系統裡的功能,比如說相機以及拉取本地相冊的功能。是以 我在這裡分享一下調用系統相機以及拉取本地相冊,将圖檔展示在本activity上:具體代碼如下:

拉取本地相冊:

public void onClick(View view) {
        Intent i = new Intent(
                Intent.ACTION_PICK,
                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(i, RESULT_LOAD_IMAGE);
    }
}      
系統相機其實有的拉取相冊之後就有相機拍攝功能,不需要有代碼調用,比如說魅族pro6s。但是也有很多隻有相冊而沒有相機,那隻能代碼實作了,代碼如下:      
調用系統相機:      
Intent i=new Intent();
             // 指定開啟系統相機的Action
            i.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
            i.addCategory(Intent.CATEGORY_DEFAULT);
             // 根據檔案位址建立檔案
             File file=new File(FILE_PATH);
             // 把檔案位址轉換成Uri格式
             Uri uri=Uri.fromFile(file);
            // 設定系統相機拍攝照片完成後圖檔檔案的存放位址             intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);      
調用完之後,就要讀取到activity上,是利用回調函數實作:代碼如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
            Uri selectedImage = data.getData();//獲得圖檔的絕對路徑
            String[] filePathColumn = {MediaStore.Images.Media.DATA};
            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            picturePath = cursor.getString(columnIndex);
            cursor.close();
            ui1.setImageBitmap(BitmapFactory.decodeFile(picturePath));
            System.out.println("圖檔位址:" + picturePath);
          image=new File(picturePath);
        }
        if (resultCode != RESULT_OK) {
            Toast.makeText(Upload.this, "ActivityResult resultCode error", Toast.LENGTH_SHORT).show();
            return;
        }
        if (requestCode == 0) {//第二個頁面傳回來的資料
//resultcode 區分結果是否屬于正常傳回
            // Toast.makeText(MainActivity.this,"跳轉成功",Toast.LENGTH_LONG).show();
        }
    }      
後端代碼已經完成了,但是最重要的就是在清單檔案裡别忘了給加上權限::::      
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />      
調用相機功能最多就是這四個權限,也是最重要的!!!!!!!!!