android 拍照
android 拍照
- 一、佈局:使用RecyclerView橫向滑動顯示。
- 二、拍照、系統適配
- 1、動態判斷許可權
- 2、FileProvider適配
-
<provider android:name="android.support.v4.content.FileProvider" android:authorities="包名.FileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/rc_file_path" /> </provider>
xml檔案
-
<?xml version="1.0" encoding="utf-8"?> <paths> <external-path name="test" path="Android/data/com/test" /> <external-path name="external_storage_root" path="." /> </paths>
自定義path路徑
-
3、拍照
private void startDeviceCamera() {
Intent mIntent = new Intent();
mIntent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
setSavePath();
deviceFile = new File(saveFile, System.currentTimeMillis() + ".jpg");
Uri uri = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkPermission()) {
requestPermission();
} else {
mIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
uri = FileProvider.getUriForFile(this, "包名.FileProvider", deviceFile);
} else {
uri = Uri.fromFile(deviceFile);
}
}
} else {
//6.0以下直接轉換Uri
uri = Uri.fromFile(deviceFile);
}
mIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(mIntent, 101);
}
private void setSavePath() {
saveFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/test"); // 自定義路徑
if (!saveFile.exists()) {
saveFile.mkdirs();
}
}
三、設定資料
Bean類 宣告圖片為Object型別
private Object imgPath;
向List新增資料
AuthDeviceBean deviceBean = new AuthDeviceBean();
deviceBean.setImgPath(R.mipmap.ic_apply_add);
authDeviceList.add(deviceBean);
為Adapter設定點選事件
authDeviceAdapter.setOnItemClickListener(new BaseAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
if (position == authDeviceList.size() - 1) {
startDeviceCamera();
}
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == 101) {
if (deviceFile.exists() && deviceFile.isFile()) {
String imgPath = deviceFile.getAbsolutePath();
AuthDeviceBean authDeviceBean = new AuthDeviceBean();
authDeviceBean.setImgPath(imgPath);
authDeviceList.add(authDeviceList.size(), authDeviceBean);
authDeviceAdapter.notifyDataSetChanged();
}
}
}
}
四、問題
此時,連續拍照功能初步完成。執行發現,2個問題。
問題1:拍第1張照片後,“+”號顯示在照片前面。
解決:onActivityResult() 方法中,向List新增資料
authDeviceList.add(authDeviceList.size(), authDeviceBean);
// 改為
authDeviceList.add(authDeviceList.size() - 1, authDeviceBean);
//注:通過add()方法,List長度減去1解決。
問題2:未限制拍照個數。
解決:adapter 點選事件中,進行判斷。
if (position == authDeviceList.size() - 1) {
startDeviceCamera();
}
// 例如:連續拍3張。通過List下標處理。
if (position == authDeviceList.size() - 1) {
if (authDeviceList.size() <= 3) {
startDeviceCamera();
} else {
Toast.makeText(mContext, "最多3張", Toast.LENGTH_SHORT).show();
}
}
連續拍照功能完成。
相關文章
- Android Camera——拍照Android
- Android 拍照新增時間水印Android
- Android自定義拍照實現Android
- Android呼叫攝像頭拍照Android
- Android提供的攝像頭拍照Android
- Android Studio 呼叫Camera實現拍照功能Android
- Android本地圖片上傳(拍照+相簿)Android地圖
- 照片系列之android呼叫攝像頭拍照Android
- Android呼叫攝像頭拍照並顯示照片Android
- Android 圓形頭像 相簿和拍照裁剪選取Android
- 【Android】【opencv】實現攝像頭拍照和錄影AndroidOpenCV
- Android 呼叫系統相機拍照 . 選取本地相簿Android
- Android | 教你如何開發一個拍照翻譯小程式Android
- Android 拍照及相簿選取圖片功能,已適配Android6.0、7.0、8.0Android
- android實現拍照、相簿選圖、裁剪功能,相容7.0以及小米Android
- 在Android中呼叫攝像頭拍照並顯示出來Android
- 短視訊程式開發,Android:呼叫系統拍照和相簿Android
- iOS自定義拍照框拍照&裁剪(一)iOS
- 直播平臺軟體開發,Android 10 拍照和相簿選擇Android
- android studio呼叫攝像頭拍照及具體步驟演示程式碼Android
- Android:呼叫系統相機實現拍照+裁切(相容7.0以上系統)Android
- Android WebView 實現檔案選擇、拍照、錄製視訊、錄音AndroidWebView
- android7.0以上呼叫系統相機拍照並顯示到ImageView上AndroidView
- Android使用者請注意,你的相機正在偷偷開啟並拍照攝像Android
- 直播平臺搭建,Android手機拍照和手機相簿選取圖片的工具Android
- Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示Android
- 手機拍照小技巧:手機拍照10個逆光風景拍攝技巧
- iPhone XS/iPhone XS Max攝像頭拍照解析:蘋果也玩起了AI拍照iPhone蘋果AI
- 盤點目前拍照最好的5款智慧手機,拍照效果堪比單反!
- 安卓呼叫攝像頭拍照安卓
- 為什麼iPhone拍照更好看iPhone
- 拍照手機怎麼選? 四款超值的高價效比拍照手機推薦
- OPPO A1拍照怎麼樣?OPPO A1配置引數詳解和拍照技巧
- OPPO K1怎麼用音量鍵拍照?OPPO K1使用音量鍵拍照方法教程
- 拍照聚焦和曝光,AVFoundation 簡明教程
- UVC攝像頭按鍵拍照功能
- ML拍照購物功能整合教程分享
- OPPO K1手勢拍照使用方法教程 OPPO K1手勢拍照怎麼設定?