拍照打开相册
来源:互联网 发布:9090端口 编辑:程序博客网 时间:2024/06/17 14:18
打开系统摄像头拍照或打开相册获取图片并显示public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button takePhoto; Bitmap photo; String picPath; Button capture; ImageView imageView; OkHttpClient mOkHttpClient; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); takePhoto = (Button) findViewById(R.id.button1); capture = (Button) findViewById(R.id.capture); imageView = (ImageView) findViewById(R.id.img); takePhoto.setOnClickListener(this); capture.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: {// 打开相机 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, "内存不可用", Toast.LENGTH_LONG) .show(); } break; } case R.id.capture: {// 打开相册// 打开本地相册 Intent i = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);// 设定结果返回 startActivityForResult(i, 2); break; } default: break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (data != null) { switch (requestCode) { case 1:// 两种方式 获取拍好的图片 if (data.getData() != null || data.getExtras() != null) { // 防止没有返回结果 Uri uri = data.getData(); if (uri != null) { this.photo = BitmapFactory.decodeFile(uri.getPath()); // 拿到图片 } if (photo == null) { Bundle bundle = data.getExtras(); if (bundle != null) { photo = (Bitmap) bundle.get("data"); FileOutputStream fileOutputStream = null; try {// 获取 SD 卡根目录 生成图片并 String saveDir = Environment .getExternalStorageDirectory() + "/dhj_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.setImageBitmap(this.photo); } catch (Exception e) { e.printStackTrace(); } finally { if (fileOutputStream != null) { try { fileOutputStream.close(); } catch (Exception e) { e.printStackTrace(); } } } Toast.makeText(getApplicationContext(), "获取到了", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "找不到图片", Toast.LENGTH_SHORT).show(); } } } break; case 2: {//打开相册并选择照片,这个方式选择单张// 获取返回的数据,这里是android自定义的Uri地址 Uri selectedImage = data.getData(); String[] filePathColumn = {MediaStore.Images.Media.DATA};// 获取选择照片的数据视图 Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); cursor.moveToFirst();// 从数据视图中获取已选择图片的路径 int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); cursor.close();// 将图片显示到界面上 imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); break; } default: break; } } }}
阅读全文
0 0
- 拍照打开相册
- 拍照和打开相册
- Android-打开相册或拍照并裁剪
- Android打开系统拍照&相册获取头像
- iOS10 拍照打开相册选择图片
- FileProvider的拍照和打开相册功能
- android 拍照相册选择 以及android6.0打开相册失败
- Android开发——相册拍照_01.打开相册和拍照(同时)
- 拍照,相册
- 相册拍照
- Air进行mobile的拍照、相册图片打开、写入相关
- 在iPad iOS8环境下打开相册或者拍照
- Android打开相册vs拍照获取图片的原理实现
- android 6.0权限开发---拍照,打开相册问题
- Android WebView中打开相机拍照和选择相册
- 从本地相册选择和拍照、从打开本地文件选择器
- 打开相机拍照与 读取背地相册图片
- android 6.0权限开发---拍照,打开相册问题
- JADE学习笔记1:JADE简介与配置
- 简单的java程序
- java算数运算符之加法
- python里使用正则表达式的限制边界功能
- angular设置一个定时器
- 拍照打开相册
- NOIP2017提高组 模拟赛 26(总结)
- OkHttp3Utils的封装
- markdown编辑器中数学公式的基本命令
- python模块之pickle模块(这是python3中为import pickle,python2中为import cPickle as pickle)
- iOSBlock函数声明定义以及调用等
- sysu-17C04签到
- 持续集成:Jmeter+Maven+Jenkins自动化框架搭建(三):Jenkins配置
- java输入两个整数,求和.