国产探花免费观看_亚洲丰满少妇自慰呻吟_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>

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和林格尔县| 柳河县| 长宁区| 搜索| 崇文区| 酒泉市| 和平县| 崇信县| 高陵县| 缙云县| 衡东县| 邛崃市| 桃园县| 涟源市| 罗甸县| 伊宁市| 彝良县| 民丰县| 汉沽区| 西吉县| 兴城市| 赣榆县| 佛坪县| 兰溪市| 桃园县| 嫩江县| 同仁县| 武安市| 平阳县| 贡觉县| 叙永县| 南江县| 楚雄市| 娱乐| 广南县| 五莲县| 西和县| 松江区| 即墨市| 潮州市| 田东县|