首页 > 代码库 > Android 拍照功能
Android 拍照功能
今天晚上从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个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。