经常使用到本地图片的获取,还有录音之类,所以就稍微整理了一下,模式都是差不多的,大家可以参考一下。
这里写代码片package com.ly.day72_camera;

import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

/**
* 拍照
* 从相册获取图片
* 录音
* 摄像
*/
public class MainActivity extends AppCompatActivity {
ImageView img;
public static final int TAKE_PHOTO = 1;//拍照后的结果
public static final int RESULT_PHOTO = 2;//裁剪后的结果
public static final int GET_PHOTO = 3;//相册获取的结果
public static final int GET_VOICE_CAMERA = 4;//获取录音的结果

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);img = (ImageView) findViewById(R.id.img);
}/*** 按钮事件的处理** @param view*/
public void btnClick(View view) {switch (view.getId()) {case R.id.btnTakePhoto: //拍照takePhoto();break;case R.id.btnGetPhoto://从相册获取getPhoto();break;case R.id.btnGetVoice://获取录音getVoice();break;case R.id.btnGetVideo://获取摄像getVideo();break;}
}/*** 获取录像*/
private void getVideo() {Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);//质量 0无损startActivityForResult(intent, GET_VOICE_CAMERA);
}/*** 获取系统录音*/
private void getVoice() {Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("audio/amr");intent.setClassName("com.android.soundrecorder", "com.android.soundrecorder.SoundRecorder");startActivityForResult(intent, GET_VOICE_CAMERA);
}/*** 获取从相册图片*/
private void getPhoto() {Intent intent = new Intent(Intent.ACTION_PICK, null);intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");//查询类型startActivityForResult(intent, GET_PHOTO);}/*** 拍照*/
private void takePhoto() {//打开相机的ActionIntent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//该参数是拍照以后存储的路径intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "tmp.jpg")));startActivityForResult(intent, TAKE_PHOTO);
}@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);switch (requestCode) {case TAKE_PHOTO://拍照返回的回调函数File file = new File(Environment.getExternalStorageDirectory(), "tmp.jpg");Log.i("info", "----------" + file.getPath());startZoom(Uri.fromFile(file));break;case RESULT_PHOTO://裁剪过后的图片返回值Bundle bundle = data.getExtras();Bitmap bitmap = bundle.getParcelable("data"); //获取返回的图片try {//保存到本地FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory() + "/tmp1.jpg");bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);img.setImageBitmap(bitmap);} catch (FileNotFoundException e) {e.printStackTrace();}break;case GET_PHOTO://相册里面获取图片startZoom(data.getData());break;case GET_VOICE_CAMERA://获取录音,或者摄像(因为处理方式相同)Cursor cursor = getContentResolver().query(data.getData(), null, null, null, null);while (cursor.moveToNext()) {//获取录音或者视频的存储路径String path = cursor.getString(cursor.getColumnIndex("_data"));Toast.makeText(MainActivity.this, path, Toast.LENGTH_SHORT).show();}break;}
}/*** 裁剪图片** @param uri*/
private void startZoom(Uri uri) {Intent intent = new Intent("com.android.camera.action.CROP");//打开要裁剪的页面intent.setDataAndType(uri, "image/*");//裁剪的图片,和图片类型intent.putExtra("aspectX", 1);  //表示裁剪图片的宽高比例intent.putExtra("aspectY", 1);  //表示裁剪图片的宽高比例intent.putExtra("outputX", 300);//表示裁剪出来缩略图的宽高intent.putExtra("outputY", 300);//表示裁剪出来缩略图的宽高intent.putExtra("crop", true);//表示是否需要裁剪intent.putExtra("return-data", true);//表示返回裁剪后的图片startActivityForResult(intent, RESULT_PHOTO);
}/*** 获取图片路径** @param originalUri* @return*/
private String getPath(Uri originalUri) {String[] proj = {MediaStore.Images.Media.DATA};//android多媒体数据库的封装接口Cursor cursor = getContentResolver().query(originalUri, proj, null, null, null);//按我个人理解 这个是获得用户选择的图片的索引值int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);//将光标移至开头 ,这个很重要,不小心很容易引起越界cursor.moveToFirst();//最后根据索引值获取图片路径String path = cursor.getString(column_index);return path;
}

}

Android中本地图片资源以及视频录音资源的获取相关推荐

  1. 在Android中调用图片、视频、音频、录音、拍照

    在Android中调用图片.视频.音频.录音.拍照 //选择图片 requestCode 返回的标识 Intent innerIntent = new Intent(Intent.ACTION_GET ...

  2. 安卓Android中腾讯音视频和直播 API的使用

    安卓Android中腾讯音视频和直播 API的使用 文章目录 安卓Android中腾讯音视频和直播 API的使用 前言:安卓Android中腾讯音视频和直播 API的使用,这里没有写UI,功能是放在一 ...

  3. android 图片读写,Android读取本地照片和视频相册

    前言 项目中经常要选择本地照片或者视频的需求,如果去扫描整个SD卡就太耗时间,其实Android系统在启动时就已经把整个设备中的多媒体文件信息(文件名,类型,大小等)都存到了数据库,然后提供了Cont ...

  4. Android中的asserts和res/raw资源目录

    1.assets目录 assets目录下称为原生文件,无法通过R资源清单类访问,这类文件在被打包成apk文件时是不会进行压缩的: (1)使用方法 AssetManager assets = this. ...

  5. Android调用相机拍照录视频录音以及存储,7.0以上及以下都可使用。

    在开头,先说一下在imageVIew中如何显示文件中存储的视频的第一帧的图片.很简单,几行代码就搞定. MediaMetadataRetriever media = new MediaMetadata ...

  6. 【移动开发】Android中不用图片资源也能做出好看的界面

    当我们个人开发者做一款Android应用时,难免会为找不到好看的图片资源而发愁,(不仅要写代码,还得要稍微会点PS什么的,唉!总之程序员什么都得要会一点...端好这碗饭可真不容易啊!)要不就是好看的图 ...

  7. android 根据资源名称,如何在Android中按名称访问可绘制资源

    你可以做这样的事情. public static Drawable getDrawable(String name) { Context context = YourApplication.getCo ...

  8. Android中把图片、视频保存到相册中

    /*** 获取fileName** 视频+图片下载*/ // String videoUrl = "http://2449.vod.myqcloud.com/2449_22ca37a6ea9 ...

  9. Android中的手机屏幕像素的几种获取方式

    在Android开发中,获取手机屏幕像素的方法有多种.在这里,我仅仅做一个小小的总结,将这些方法分为两类.一类是使用Activity类来获取,另一类便是使用上下文(Context)来获取. 1.使用A ...

最新文章

  1. MVC中获取模型属性的Range和StringLength验证特性设置
  2. 将windows系统装到USB存储设备
  3. 数据库(二)tab补全功能,使数据库支持简体中文,日志管理,备份脚本
  4. 简单的通用TreeView(WPF)
  5. 实验1-5 输出菱形图案 (5 分)
  6. 企业应用:应用层查询接口设计
  7. php扩展leonis,LNMP环境部署
  8. Eclipse如何使用Git完成代码比对并提交操作
  9. web前端开发技术----登录页面
  10. 啥是全栈程序员?更厉害?更有钱途?
  11. AWS——API Gateway
  12. mysql备份与恢复方案_MYSQL备份与恢复
  13. 如何实现微信小程序手机号授权
  14. 为什么软件开发周期总是预估的2~3倍?
  15. [LibreOJ 3124]【CTS2019】氪金手游【容斥原理】【概率】【树形DP】
  16. 算法与数据结构 --- 哈夫曼树及其应用
  17. 著名平面设计师有哪些?你想成为他们嘛?
  18. CSS3 2D转换3D转换
  19. 关于Twitter Card的一个巨坑
  20. Linux-如何查看进程和关闭进程

热门文章

  1. 加盐密码哈希:如何正确使用
  2. 在宝能集团工作3年,谈谈我对宝能的认识
  3. 计算机专业网络实训室,计算机网络实训室
  4. 谷歌留痕霸屏平台有哪些?
  5. 小程序的图片上传wx.uploadFile及后台PHP接收文件并存储到服务器
  6. 记录一次Thymeleaf th:inline内联问题
  7. 深度复盘:用半年时间操盘一家出海创业公司
  8. 体验实验室之数据湖构建DLF专场,动手实践完成小任务,领取定制polo衫!
  9. Python-Django毕业设计医院住院部管理系统(程序+Lw)
  10. BUUCTF_pyre