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拍照Android
- Android Media(拍照)Android
- Android Camera——拍照Android
- Android呼叫攝像頭拍照Android
- Android自定義拍照實現Android
- Android 拍照新增時間水印Android
- Android 呼叫攝像頭拍照Android
- Android提供的攝像頭拍照Android
- Android本地圖片上傳(拍照+相簿)Android地圖
- Android 拍照、選擇圖片並裁剪Android
- android 實現拍照的2種方法Android
- 照片系列之android呼叫攝像頭拍照Android
- Android開發之呼叫攝像頭拍照Android
- Android呼叫系統相簿和相機拍照Android
- Android Studio 呼叫Camera實現拍照功能Android
- Android呼叫攝像頭拍照並顯示照片Android
- Android7.0拍照以及使用uCrop裁剪Android
- Android 呼叫攝像頭功能【拍照與視訊】Android
- Android 圓形頭像 相簿和拍照裁剪選取Android
- 【Android】【opencv】實現攝像頭拍照和錄影AndroidOpenCV
- Android拍照與相機適配問題彙總Android
- Android 呼叫系統相機拍照 . 選取本地相簿Android
- Android 從本地選取圖片或者拍照填充ImageViewAndroidView
- Android拍照,相簿選擇圖片以及Android6.0許可權管理Android
- iOS自定義拍照框拍照&裁剪(一)iOS
- Android | 教你如何開發一個拍照翻譯小程式Android
- 在Android中呼叫攝像頭拍照並顯示出來Android
- 短視訊程式開發,Android:呼叫系統拍照和相簿Android
- android實現拍照、相簿選圖、裁剪功能,相容7.0以及小米Android
- Android多媒體應用開發-控制攝像頭拍照Android
- Android 拍照及相簿選取圖片功能,已適配Android6.0、7.0、8.0Android
- 直播平臺軟體開發,Android 10 拍照和相簿選擇Android
- Android 用MultiImageSelector實現上傳頭像的拍照跟相簿Android
- GPUImage之拍照篇GPUUI
- Android:呼叫系統相機實現拍照+裁切(相容7.0以上系統)Android
- Android WebView 實現檔案選擇、拍照、錄製視訊、錄音AndroidWebView
- Android開發獲取相機拍照的原圖(並非縮圖)Android
- Android學習之呼叫系統相機拍照、截圖並儲存Android