現在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" />
調用相機功能最多就是這四個權限,也是最重要的!!!!!!!!!