標籤:android style blog color os io 檔案 for ar
今天晚上從22點開始一直在那邊測拍照閃退的情況,真心糾結!於是另外建了一個項目再測,發現建立的項目並沒有出現閃退的情況。於是我開始卸載項目,發現重新安裝後並不會出現閃退問題。上傳大概3-4張照片後,又開始閃退。所以終於查出閃退的根本原因是記憶體不夠了!
終於功夫不負有心人,發現問題所在了。還是發現問題最重要了,下面貼上代碼。
先上傳一些核心類庫,用來得到一個根路徑。
public class UploadImage { // 擷取sd卡根目錄地址,並建立圖片父目錄檔案對象和檔案的對象; private static String file_str = Environment.getExternalStorageDirectory().getPath(); public static File mars_file = new File(file_str + "/RZproject");}
假如已經點擊了一個按鈕,先是彈出一個選擇框。
/** * 選擇照片! */private void setPhotos() { new AlertDialog.Builder(MainActivity.this) .setTitle("提示").setMessage("請選擇擷取圖片的方式") .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { arg0.cancel(); } }) .setPositiveButton("拍照", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { takePhotos(); } }) .setNeutralButton("相簿", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { selectPhotos(); } }).show();}
那格式真心不協調!算了,繼續貼代碼!
private String fileImageName;private static final int PHOTO_GRAPH = 1;private static final int PHOTO_SELECT = 2;private void takePhotos() { // 驗證sd卡是否正確安裝: if (Environment.MEDIA_MOUNTED.equals(Environment .getExternalStorageState())) { // 先建立父目錄,如果新建立一個檔案的時候,父目錄沒有存在,那麼必須先建立父目錄,再建立檔案。 if (!UploadImage.mars_file.exists()) { UploadImage.mars_file.mkdirs(); } Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); fileImageName = UploadImage.mars_file + "/" + ViewUtil.getNewGUID() + ".jpg"; File newFile_go = new File(fileImageName); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(newFile_go)); // 跳轉到拍照介面; startActivityForResult(intent, PHOTO_GRAPH); } else { //ViewUtil.showToast("找不到SD卡", false); }}/** * 從相簿選擇 * */private void selectPhotos() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, PHOTO_SELECT);}
接下來是選擇圖片之後的回呼函數。
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PHOTO_GRAPH && resultCode == RESULT_OK) { showProgressDialog(R.string.phots_string); new ImageThread(fileImageName).start(); } else if (requestCode == PHOTO_SELECT && resultCode == RESULT_OK) { String path = ViewUtil.getPhotosPath(data); copyPhotos(path); } }
應該還有一種拍照的實現方法,暫時沒有研究過。暫時略過!
Android 拍照功能