Android 拍照功能

來源:互聯網
上載者:User

標籤: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 拍照功能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.