欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android開發(fā)實現(xiàn)ImageView加載攝像頭拍攝的大圖功能

 更新時間:2017年11月10日 10:33:25   作者:AAA啊哈  
這篇文章主要介紹了Android開發(fā)實現(xiàn)ImageView加載攝像頭拍攝的大圖功能,涉及Android基于ImageView的攝像頭拍攝圖片加載、保存及權(quán)限控制等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Android開發(fā)實現(xiàn)ImageView加載攝像頭拍攝的大圖功能。分享給大家供大家參考,具體如下:

這個方法是從官方demo中摘錄的,在此記錄學(xué)習(xí)。

權(quán)限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature
  android:name="android.hardware.camera2"
  android:required="false" />

另:關(guān)于權(quán)限控制還可參考:Android Manifest功能與權(quán)限描述大全

設(shè)置變量保存文件存儲路徑

private String mCurrentPhotoPath;
/**
* 拍照flag
*/
private static final int REQUEST_IMAGE_CAPTURE_O = 2;

創(chuàng)建存儲路徑及文件名

 /**
* 創(chuàng)建拍攝的圖片的存儲路徑及文件名
* @return
* @throws IOException
*/
private File createImageFile() throws IOException{
  String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
  String imageFileName = "JPEG_" + timeStamp + "_";
  File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
  Log.d("TrainingFirstActivity", "storageDir:" + storageDir);
  File image = File.createTempFile(imageFileName, ".jpg", storageDir);
  mCurrentPhotoPath = image.getAbsolutePath();
  Log.d("image.getAbsolutePath()", image.getAbsolutePath() + "");
  return image;
}

拍攝圖片并保存

Intent takePictureOintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureOintent.resolveActivity(getPackageManager()) != null){
 File photoFile = null;
 try {
  photoFile = createImageFile();
 } catch (IOException e) {
  e.printStackTrace();
 }
 if (photoFile != null){
  takePictureOintent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
  startActivityForResult(takePictureOintent, REQUEST_IMAGE_CAPTURE_O);
 }
}

處理并壓縮拍照結(jié)果,takePhotoThenToShowImg是一個ImageView控件

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == REQUEST_IMAGE_CAPTURE_O && resultCode == RESULT_OK){
   int targetW = takePhotoThenToShowImg.getWidth();
   int targetH = takePhotoThenToShowImg.getHeight();
  /* Get the size of the image */
   BitmapFactory.Options bmOptions = new BitmapFactory.Options();
   bmOptions.inJustDecodeBounds = true;
   BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
   int photoW = bmOptions.outWidth;
   int photoH = bmOptions.outHeight;
  /* Figure out which way needs to be reduced less */
   int scaleFactor = 1;
   if ((targetW > 0) || (targetH > 0)) {
    scaleFactor = Math.min(photoW/targetW, photoH/targetH);
   }
  /* Set bitmap options to scale the image decode target */
   bmOptions.inJustDecodeBounds = false;
   bmOptions.inSampleSize = scaleFactor;
   bmOptions.inPurgeable = true;
  /* Decode the JPEG file into a Bitmap */
   Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
  /* Associate the Bitmap to the ImageView */
   takePhotoThenToShowImg.setImageBitmap(bitmap);
   galleryAddPic();
  }
}

最后可以將拍攝到的照片添加到Media Provider的數(shù)據(jù)庫中,以便圖庫或者其他程序讀取照片

/**
* 將拍攝到的照片添加到Media Provider的數(shù)據(jù)庫中
*/
private void galleryAddPic(){
  Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
  File f = new File(mCurrentPhotoPath);
  Uri contentUri = Uri.fromFile(f);
  mediaScanIntent.setData(contentUri);
  this.sendBroadcast(mediaScanIntent);
}

如果只需要縮略圖的話,只要調(diào)攝像頭拍攝直接處理結(jié)果就行

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK){//展示圖片
   Bundle extras = data.getExtras();
   Bitmap imageBitmap = (Bitmap) extras.get("data");
   takePhotoThenToShowImg.setImageBitmap(imageBitmap);
  }
}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android拍照與圖片處理技巧總結(jié)》、《Android圖形與圖像處理技巧總結(jié)》、《Android開發(fā)入門與進階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

  • Android實現(xiàn)圖片滾動效果

    Android實現(xiàn)圖片滾動效果

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圖片滾動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • Android Socket通信的簡單實現(xiàn)

    Android Socket通信的簡單實現(xiàn)

    這篇文章主要為大家詳細介紹了Android Socket通信的簡單實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Android創(chuàng)建淡入淡出動畫的詳解

    Android創(chuàng)建淡入淡出動畫的詳解

    大家好,本篇文章主要講的是Android創(chuàng)建淡入淡出動畫的詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Android 中使用ContentObserver模式獲取短信用正則自動填充驗證碼

    Android 中使用ContentObserver模式獲取短信用正則自動填充驗證碼

    這篇文章主要介紹了Android 中使用ContentObserver模式獲取短信用正則自動填充驗證碼,首先使用了ContentObserver監(jiān)聽短信,然后從短信中用正則的分組去拿到驗證碼,具體實現(xiàn)代碼大家參考下本文
    2017-02-02
  • android 右滑返回的示例代碼

    android 右滑返回的示例代碼

    本篇文章主要介紹了android 右滑返回的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Android仿微信語音聊天功能

    Android仿微信語音聊天功能

    這篇文章主要介紹了Android仿微信語音聊天功能,很實用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 詳解Android創(chuàng)建Handler的必備知識點

    詳解Android創(chuàng)建Handler的必備知識點

    本篇文章主要介紹Handler中需要了解的幾個必備知識點,比如Handler創(chuàng)建、異步Handler是個啥及如何創(chuàng)建,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • Android AlarmManager實現(xiàn)定時循環(huán)后臺任務(wù)

    Android AlarmManager實現(xiàn)定時循環(huán)后臺任務(wù)

    這篇文章主要為大家詳細介紹了Android AlarmManager實現(xiàn)定時循環(huán)后臺任務(wù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Android?Camera+SurfaceView自動聚焦防止變形拉伸

    Android?Camera+SurfaceView自動聚焦防止變形拉伸

    這篇文章主要為大家介紹了Android自定義相機Camera+SurfaceView實現(xiàn)自動聚焦防止變形拉伸詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Android XRecyclerView實現(xiàn)多條目加載

    Android XRecyclerView實現(xiàn)多條目加載

    這篇文章主要為大家詳細介紹了Android XRecyclerView實現(xiàn)多條目加載效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論