導航:首頁 > 操作系統 > android調用相冊和相機

android調用相冊和相機

發布時間:2025-02-14 10:01:55

⑴ 請android高手幫忙!

使用照相機的方法:
//在監聽事件中加入如下代碼
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/","temp.jpg")));
startActivityForResult(intent, reqCode_CAMERA);// reqCode_CAMERA是一個一自己設定的值,用於在onActivityResult方法中判斷是哪一個activity返回的
再重寫onActivityResult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == reqCode_CAMERA && resultCode== RESULT_OK){
////這里是直接隱式啟動系統圖片預覽程序
// Intent intent = new Intent();
// intent.setAction(Intent.ACTION_VIEW);
//// uri指向用戶選擇的那個圖片
// Uri uri = data.getData();
// intent.setData(uril);
// startActivity(intent);

// Uri uri = data.getData();
// Cursor cursor = getContentResolver().query(uri, null, null, null, null);
// if(cursor!=null&&cursor.moveToFirst()){
// String path = cursor.getString(1);
// Bitmap bm = BitmapFactory.decodeFile(path);
// iv.setImageBitmap(bm);
// }
// iv.setImageURI(uri);

//也可以用這里代碼打開圖片裁剪
Intent intent = new Intent();
intent.setAction("com.android.camera.action.CROP");
intent.setType("image/*");
intent.putExtra("data", data.getExtras().getParcelable("data"));
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);//默認圖片剪裁起始位置x值
intent.putExtra("aspectY", 1);//默認圖片剪裁起始位置y值
intent.putExtra("outputX", 128);//默認圖片剪裁終止位置x值
intent.putExtra("outputY", 128);//默認圖片剪裁終止位置x值
intent.putExtra("return-data", true);
startActivityForResult(intent, reqCode_Zoom);

}//這里是處理剪裁圖片返回後的處理,直接調用ImageView顯示了,你可以根據你的需要修改
else if(requestCode==reqCode_Zoom){
Bitmap bitmap = data.getExtras().getParcelable("data");
iv.setImageBitmap(bitmap);
}

上傳本地圖片方法:

按鈕名.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 隱式啟動系統相冊程序
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setDataAndType(Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, reqCode_PICK);// reqCode和上面一樣自己定義,但是不要重復了
}
});
再在onActivityResult方法添加一個"elseif(requestCode == reqCode_PICK && resultCode== RESULT_OK)"條件,方法體直接參考上面,就是在剪裁那裡把「intent.putExtra("data", data.getExtras().getParcelable("data"));」換為「intent.setDataAndType(data.getData(), "image/*");」就可以了。

⑵ Android調用系統相機實現拍照和視頻錄制

(1)申請許可權

(2)設置布局

這里做了一個簡單的布局:添加了一個按鈕和一個ImageView控制項用於顯示拍攝的圖像。

(3)為按鈕添加點擊事件監聽

點擊按鈕時,調用系統相機進行拍照,並在確定後將圖像顯示在ImageView控制項中。

(1)申請許可權

(2)設置布局

添加了一個按鈕和一個VideoView控制項用於顯示錄制的視頻。

(3)為按鈕添加點擊事件監聽

同前面一樣,點擊按鈕後調用系統相機進行錄制視頻,錄制完成後點擊確定即可將錄制的視頻顯示在VideoView控制項中。

對於Android11.0的版本,在調用系統相近進行視頻錄制的時候,即使在AndroidMenifest.xml中申請了CAMERA許可權,還是會在程序運行時報錯: Permission  Denial ,   . .... ....  with revoked permission android.permission.CAMERA

解決方法是在程序中動態申請許可權:

寫在最後:文章是在學習過程中做的學習筆記,同時與志同道合者分享,文章內容均經過我自己實驗證實可行,如有問題歡迎留言,很高興一起交流討論,共同進步!

⑶ Android調用相機相冊選圖時怎麼跳過裁剪

Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, PICK);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {

case PICK:
String picPath = null;
String[] pojo = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(data.getData(), pojo, null, null,
null);
if (cursor != null) {
int columnIndex = cursor.getColumnIndexOrThrow(pojo[0]);
cursor.moveToFirst();
picPath = cursor.getString(columnIndex);
try {
if (Integer.parseInt(Build.VERSION.SDK) < 14) {
cursor.close();
}
} catch (Exception e) {
Log.e("", "error:" + e);
}
}
Log.i("", "imagePath = " + picPath);

閱讀全文

與android調用相冊和相機相關的資料

熱點內容
三條件的編譯方法 瀏覽:911
安卓怎麼使用時間長 瀏覽:195
輸入的命令怎麼撤回 瀏覽:41
楊冪公司需要程序員嗎 瀏覽:227
排列組合怎麼在數學編譯器上輸入 瀏覽:161
美的空調壓縮機不啟動帶電 瀏覽:61
程序員熬夜猝死的概率 瀏覽:164
網站伺服器如何入侵 瀏覽:125
加密文件禁止發送 瀏覽:12
單片機最快啟動時間 瀏覽:670
程序員怎麼建網盤服務 瀏覽:834
android下載網路視頻 瀏覽:89
idea編譯器皮膚 瀏覽:757
程序員後腰酸脹什麼原因 瀏覽:133
安卓手機群聊如何設置接龍 瀏覽:122
程序員區縣 瀏覽:662
python中n維變數擬合函數 瀏覽:543
ps下載游戲解壓 瀏覽:699
altera公司編譯軟體 瀏覽:65
刪除了微信app怎麼恢復聊天記錄 瀏覽:773