国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

安卓開發之使用攝像頭

2019-11-06 09:40:40
字體:
來源:轉載
供稿:網友

一、創建一個File,用于存儲攝像頭拍下的照片

File outputImage = new File(getExternalCacheDir(),"output_image.jpg");

… outputImage.createNewFile();//如果創建文件失敗,則拋出異常 … //getExternalCacheDir()是當前應用緩存數據(應用關聯緩存目錄)的位置,這樣寫的好處是因為從Android6.0開始,讀寫SD卡被列為危險項目,處理起來比較復雜,而采用應用關聯緩存目錄可以繞過這一步。

二、 獲取照片地址Uri

if(Build.VERSION.SDK_INT >= 24){imageUri = File//這里獲取URI時要進行判斷,如果是安卓7.0以上的話,就要使用一個特殊的內容提供器FileProvider,它可以選擇性地將封裝過的Uri提供給外部

三、 注冊內容提供器:

① 進入AndroidManifest.xml中,如下改動

<application … <provider android:authorities="com.wcs.choosepictest.fileprovider" android:name="android.support.v4.content.FileProvider"http://這里是固定的寫法 android:exported="false"http://這里必須為false,為true則會報安全異常 android:grantUr② 新建xml目錄,并將內容設為:

<?xml version="1.0" encoding="utf-8"?><path xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="my_images" path=""/></path>

四、 打開照相機:

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);startActivityForResult(intent,TAKE_PHOTO);//啟動相機

五、 解析照片并顯示:

Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));picture.setImageBitmap(bitmap);

附源代碼: MainActivity:

package com.wcs.choosepictest;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Build;import android.os.Environment;import android.provider.MediaStore;import android.support.v4.content.FileProvider;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import
java.io.File;import java.io.FileNotFoundException;import java.io.IOException;public class MainActivity extends AppCompatActivity { public static final int TAKE_PHOTO = 1;//照相 private Button takePhoto; private ImageView picture; private Uri imageUri;//圖片的保存地址 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); takePhoto = (Button)findViewById(R.id.take_photo); picture = (ImageView)findViewById(R.id.picture); takePhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("MainActivity","Starting..."); //創建File對象,用于儲存招片 File outputImage = new File(getExternalCacheDir(),"output_image.jpg"); try{ if(outputImage.exists()) outputImage.delete(); outputImage.createNewFile();//如果創建文件失敗,則拋出異常 }catch (IOException e){ e.printStackTrace(); } if(Build.VERSION.SDK_INT >= 24){ imageUri = FileProvider.getUriForFile(MainActivity.this,"com.wcs.choosepictest.fileprovider",outputImage); }else { imageUri = Uri.fromFile(outputImage);//將圖片地址用URI保存 } Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); startActivityForResult(intent,TAKE_PHOTO);//啟動相機 } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode,resultCode,data); switch(requestCode){ case TAKE_PHOTO: Log.d("MainActivity","resultCode is:"+resultCode); if(resultCode == RESULT_OK){ try{ Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri)); picture.setImageBitmap(bitmap); }catch (FileNotFoundException e){ e.printStackTrace(); } } break; default: break; } }}

AndroidManifest:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.wcs.choosepictest"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Afile_paths:

<?xml version="1.0" encoding="utf-8"?><path xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="my_images" path=""/></path>

運行效果如下: 這里寫圖片描述 這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 锡林浩特市| 聊城市| 大埔区| 阳山县| 奉新县| 延川县| 汾阳市| 忻城县| 丽江市| 洛阳市| 桦川县| 江山市| 永顺县| 海南省| 江达县| 乃东县| 黎平县| 鲁山县| 抚宁县| 宕昌县| 深州市| 噶尔县| 隆尧县| 榕江县| 舟曲县| 运城市| 西平县| 虹口区| 麦盖提县| 扬州市| 舟山市| 新民市| 印江| 读书| 尉犁县| 巴楚县| 新竹县| 宁都县| 宣恩县| 吉木萨尔县| 银川市|