简单的 Android 拍照并显示以及获取路径后上传
简单的 Android 拍照并显示以及获取路径后上传
Activity 中的代码,我只贴出重要的事件部分代码
- public void doPhoto(View view)
- {
- destoryBimap();
- String state = Environment.getExternalStorageState();
- if (state.equals(Environment.MEDIA_MOUNTED)) {
- Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
- startActivityForResult(intent, 1);
- } else {
- Toast.makeText(MainActivity.this, "没有SD卡", Toast.LENGTH_LONG).show();
- }
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data)
- {
- Uri uri = data.getData();
- if (uri != null) {
- this.photo = BitmapFactory.decodeFile(uri.getPath());
- }
- if (this.photo == null) {
- Bundle bundle = data.getExtras();
- if (bundle != null) {
- this.photo = (Bitmap) bundle.get("data");
- } else {
- Toast.makeText(MainActivity.this, "拍照失败", Toast.LENGTH_LONG).show();
- return;
- }
- }
- FileOutputStream fileOutputStream = null;
- try {
- // 获取 SD 卡根目录
- String saveDir = Environment.getExternalStorageDirectory() + "/meitian_photos";
- // 新建目录
- File dir = new File(saveDir);
- if (! dir.exists()) dir.mkdir();
- // 生成文件名
- SimpleDateFormat t = new SimpleDateFormat("yyyyMMddssSSS");
- String filename = "MT" + (t.format(new Date())) + ".jpg";
- // 新建文件
- File file = new File(saveDir, filename);
- // 打开文件输出流
- fileOutputStream = new FileOutputStream(file);
- // 生成图片文件
- this.photo.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
- // 相片的完整路径
- this.picPath = file.getPath();
- ImageView imageView = (ImageView) findViewById(R.id.showPhoto);
- imageView.setImageBitmap(this.photo);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (fileOutputStream != null) {
- try {
- fileOutputStream.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
- /**
- * 销毁图片文件
- */
- private void destoryBimap()
- {
- if (photo != null && ! photo.isRecycled()) {
- photo.recycle();
- photo = null;
- }
- }
Layout 布局页面
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- >
- <ScrollView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- >
- <Button
- android:id="@+id/doPhoto"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:padding="10dp"
- android:layout_marginBottom="10dp"
- android:text="拍照"
- android:onClick="doPhoto"
- />
- <TextView
- android:id="@+id/showContent"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="10dp"
- />
- <ImageView
- android:id="@+id/showPhoto"
- android:layout_width="fill_parent"
- android:layout_height="250dp"
- android:scaleType="centerCrop"
- android:src="@drawable/add"
- android:layout_marginBottom="10dp"
- />
- </LinearLayout>
- </ScrollView>
- </LinearLayout>
其中的上传工具类请查看该文章:
http://blog.csdn.net/zhouzme/article/details/18952053
简单的 Android 拍照并显示以及获取路径后上传的更多相关文章
- 关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)
一.数据库存储 直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733 直接存图片在mysql上面 ...
- 【转】关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)
一.数据库存储 直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733 直接存图片在mysql上面 ...
- Springboot框架中request.getInputStream()获取不到上传的文件流
Springboot框架中用下面的代码,使用request.getInputStream()获取不到上传的文件流 @PostMapping("/upload_img") publi ...
- Android 拍照或者从相册获取图片的实现
我们常常会用到上传头像,或者发帖子的时候选择本地图片上传的功能.这个很常见 今天因为app的需求我研究了下.现在分享下. 其实不论是通过拍照还是从相册选取都会用到Intent 这是系统提供给我们用来调 ...
- Android拍照和从相册获取照片
1.从相册获取照片 private void openAlumb() { //mRxPermissions:三方权限库 mRxPermissions .request(Manifest.permiss ...
- Android获取通讯录并上传(包含通讯录加密)
好久没更新文章了,近期在做通讯录上传,把它分享出来,送给需要的朋友. 写了一个通讯录工具类,直接放代码吧,关键位置通过注释来解释. 这个工具类包含通讯录获取,加密,然后上传操作.看不懂的可以留言 im ...
- Android上传图片到PHP服务器并且支持浏览器上传文件(word、图片、音乐等)
暑假已经过了一半了,这才完成计划当中的第二个任务.虽然进度是慢了点.但也算是暑假的收获吧.下面我就把我学习当中的收获记录在此. 还是跟以往一样,先上图片. 操作的步骤:打开程序---->选择上传 ...
- (转)Android学习-使用Async-Http实现图片压缩并上传功能
(转)Android学习-使用Async-Http实现图片压缩并上传功能 文章转载自:作者:RyaneLee链接:http://www.jianshu.com/p/940fc7ba39e1 让我头疼一 ...
- Android学习笔记_13_网络通信之多个上传文件
一.获取HTTP协议: 建立一个Web项目,建立一个如下所示的jsp界面,用IE捕获表单提交信息. <%@ page language="java" contentType= ...
随机推荐
- Factory Pattern(工厂模式)
1.工厂模式简介 工厂模式,专门负责将大量有共同接口的类实例化(用来生产对象).其定义为定义一个用于创建对象的接口,让子类决定实例化那一个类.工厂方法使一个类的实例化延迟到其子类. 工厂模式拥有以下几 ...
- angularjs 中的iframe 标签 ng-src 路径
如果直接写路径到iframe标签里的ng-src中会出现报错: 解决方法: 1.ng里面有个属性是专门用来解决跨域问题的 $sce. 用法: $scope.someUrl = $sce.trustAs ...
- python3中字典的copy
字典是可变的: first和second同时指向一个字典.first修改也会影响second.在程序中一定注意对字典参数的修改会对原始的字典进行修改.这也体现了字典是可变的. 字典的copy方法是浅拷 ...
- angular-ui-bootstrap插件API - Pagination
Pagination: 案例 <!DOCTYPE html> <html lang="en" ng-app="myApp"> <h ...
- redis配置文件redis.conf的参数说明
打开redis.conf文件: # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that R ...
- [HMLY]3.如何使用Xcode Targets管理开发和生产版本?
本文原地址:http://www.appcoda.com/using-xcode-targets/ 在开始此教程之前,我们假设你已经完成了应用程序的开发和测试,现在准备提交生产发布.问题是,某些web ...
- 驱动相关Error
驱动中 fltKernel.h报 EPROCESS和PETHREAD重定义异常解决办法 驱动编写中经常会莫名出现 error C2371: 'PEPROCESS' : redefinition; di ...
- 【Python】协程实现生产者消费者模型
协程的实现为协作式而非抢占式的,这是和进程线程的最大区别.在Python中,利用yield和send可以很容易实现协程. 首先复习下生成器. 如果一个函数使用了yield语句,那么它就是一个生成器函数 ...
- jar中没有主清单属性
在导出jar时指定主类位置 或手动配置jar包中的MANIFEST.MF文件: 添加Main-Class: gui 参考: JAVA环境变量 CLASSPATH .;%JAVA_HOME%\lib\d ...
- C# Oracle insert 中文乱码
问题描述: 在PL SQL中insert 中文数据,显示不乱码,通过后台insert的中文数据,显示问号. 解决分三步: 1.Select userenv('language') from dual; ...