Android提供的攝像頭拍照
在微博,QQ,微信裡面分享自己的點點滴滴,可以從相簿傳相片,也可以開啟相機即使拍攝,這就要說到Android提供的攝像頭拍照
第一步,獲取許可權
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) { //如果沒有許可權,動態申請授權 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2); }
第二步,建立用於儲存的檔案,並且用intent呼叫系統攝像頭拍照程式
Button btTakePhoto = (Button) findViewById(R.id.btTakePhoto); btTakePhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { File sdcard = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); picFile = new File(sdcard, System.currentTimeMillis() + ".jpg"); picFile.createNewFile(); Log.e("UseSystemCameraApp", picFile.getName() + "建立成功"); } catch (IOException e) { e.printStackTrace(); } Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(picFile)); startActivityForResult(intent, 1); } }); }
第三步,把照片顯示出來
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { ImageView iv = (ImageView) findViewById(R.id.ivShow); iv.setImageURI(Uri.fromFile(picFile)); } super.onActivityResult(requestCode, resultCode, data); }
同樣也需要onRequestPermissionsResult
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 1) { if (!(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)) { Toast.makeText(this, "未獲得SD卡訪問許可權", Toast.LENGTH_LONG).show(); finish(); } } }
到這裡似乎就已經完成要做的步驟了,但其實還有最後一步,因為我們使用的是intent.putExtra,這會導致當前activity的URI會暴露給下一個activity,如果不處理,就會報錯。所以在onCreate中要使用StrictMode.VmPolicy.Builder進行監控
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.build()); builder.detectFileUriExposure(); Button btTakePhoto = (Button) findViewById(R.id.btTakePhoto);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2680962/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android呼叫攝像頭拍照Android
- Android 呼叫攝像頭拍照Android
- 安卓呼叫攝像頭拍照安卓
- 照片系列之android呼叫攝像頭拍照Android
- Android開發之呼叫攝像頭拍照Android
- Android呼叫攝像頭拍照並顯示照片Android
- Android 呼叫攝像頭功能【拍照與視訊】Android
- 【Android】【opencv】實現攝像頭拍照和錄影AndroidOpenCV
- C#實現攝像頭呼叫、拍照C#
- 在Android中呼叫攝像頭拍照並顯示出來Android
- Android多媒體應用開發-控制攝像頭拍照Android
- html5呼叫攝像頭實現拍照HTML
- Android呼叫攝像頭Android
- 瀏覽器呼叫攝像頭進行拍照程式瀏覽器
- AngularJS中使用HTML5攝像頭拍照AngularJSHTML
- android opencv 前置攝像頭AndroidOpenCV
- android 開啟攝像頭Android
- 修正Android攝像頭APIAndroidAPI
- Android如何呼叫攝像頭Android
- C# 使用AForge呼叫筆記本攝像頭拍照C#筆記
- [譯]Android的多攝像頭支援Android
- [譯] Android 的多攝像頭支援Android
- iPhone XS/iPhone XS Max攝像頭拍照解析:蘋果也玩起了AI拍照iPhone蘋果AI
- android studio呼叫攝像頭拍照及具體步驟演示程式碼Android
- 純JavaScript實現的呼叫裝置攝像頭並拍照的功能JavaScript
- web呼叫攝像頭拍照並上傳到伺服器Web伺服器
- Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示Android
- python版opencv:如何用筆記本攝像頭拍照儲存PythonOpenCV筆記
- 如何使用HTML5實現利用攝像頭拍照上傳功能HTML
- Android 攝像頭預覽懸浮窗Android
- 攝像頭操作指南
- 如何在SAP UI5應用裡新增使用攝像頭拍照的功能UI
- 簡單介紹C#獲取攝像頭拍照顯示影像的方法C#
- Android 圓形頭像 相簿和拍照裁剪選取Android
- ToDesk勾上攝像頭會看到我嗎?如何關閉攝像頭
- Android CameraX 開啟攝像頭預覽Android
- 攝像頭黑屏怎麼辦 各種攝像頭不能用的解決方法
- .NET 攝像頭採集