`

android多媒体学习笔记一

阅读更多

1 使用内置的camera应用程序捕获图像

 

/**
* 拍摄一张照片保存到sd卡上
*/
private void takeAndSaveImage() {
// 取得路径
imageFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myfavoritepicture.jpg";
Log.i("tag", "sd card path:" + imageFilePath);


File imageFile = new File(imageFilePath);
Uri imageFileUri = Uri.fromFile(imageFile);


Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageFileUri);
startActivityForResult(i, CAMERA_RESULT);
}

/**
* 显示一张相片
*/
private void displayImage() {
// 取得屏幕大小
Display display = getWindowManager().getDefaultDisplay();
int dw = display.getWidth();
int dh = display.getHeight();


Log.i("tag", "dw:" + dw + " dh:" + dh);


// 加载图像的尺寸而不是图像本身
bmpOptions = new BitmapFactory.Options();
// 如果为true,只须返回图像的范围,不须尝试解码图像本身
bmpOptions.inJustDecodeBounds = true;
// options.inSampleSize = 8;
Bitmap bitmap = BitmapFactory.decodeFile(imageFilePath, bmpOptions);


int hRatio = (int) Math.ceil(bmpOptions.outHeight / (float) dh);
int wRatio = (int) Math.ceil(bmpOptions.outWidth / (float) dw);


Log.i("tag", "hRatio" + hRatio);
Log.i("tag", "wRatio" + wRatio);
// 如果两个比率都大于1
// 那么图像的一条边将大小屏幕
if (hRatio > 1 && wRatio > 1) {
if (hRatio > wRatio) {
Log.i("tag", "hRatio" + hRatio);
// 若高度比率更大,则根据它缩放
bmpOptions.inSampleSize = hRatio;
} else {
Log.i("tag", "wRatio" + wRatio);
// 反之则根据宽度缩放
bmpOptions.inSampleSize = wRatio;
}
}
// 对图像进行解码
bmpOptions.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeFile(imageFilePath, bmpOptions);


// 显示图片
imageView.setImageBitmap(bitmap);
}

 

注:所需权限

<uses-permission android:name="android.permission.CAMERA" />


2 图像存储和元数据

获取图像的uri

使用MediaStore存储图像

/**
* 取得图像的uri
*
* 如果是存储在SD卡上 EXTERNAL_CONTENT_URI 如果是存储在设备内存中 INTERNAL_CONTENT_URI
*/
private void getImageURI() {
// 在contentValues映射中保存图像的名称和描述
ContentValues contentValues = new ContentValues();
contentValues.put(Media.DISPLAY_NAME, "this is a test title");
contentValues.put(Media.DESCRIPTION, "this is a test description");
contentValues.put(Media.MIME_TYPE, "image/jpeg");


imageFileUri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, contentValues);


// 方法二:后期添加元数据
// ContentValues contentValues = new ContentValues();
// contentValues.put(Media.DISPLAY_NAME, "this is a test title");
// contentValues.put(Media.DESCRIPTION, "this is a test description");
// contentValues.put(Media.MIME_TYPE, "image/jpeg");


// getContentResolver().update(imageFileUri, contentValues, null, null);


Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageFileUri);
startActivity(intent);
}

 

使用MediaStore检索图像章

/**
* 检索保存的图像
*
* @throws FileNotFoundException
*/
private void findBitmap() throws FileNotFoundException {
BitmapFactory.decodeStream(getContentResolver().openInputStream(imageFileUri), null, bmpOptions);
}

 

分享到:
评论

相关推荐

    Android学习笔记

    ### Android学习笔记 #### 1. Android概述 **1.1 Android的特性** - **应用框架**:Android提供了一个强大的应用框架,使得开发者能够轻松地重用基础组件和服务,简化了应用程序的开发流程。 - **Dalvik虚拟机**...

    Android学习笔记.doc Android学习笔记.doc

    【Android学习笔记】 Android平台是谷歌推出的一个开放源代码的移动设备操作系统,它为开发者提供了一个全面的软件包,包括操作系统、中间件和关键应用程序。这个平台的主要目标是促进移动应用的创新和多样性,允许...

    Android_学习笔记.zip

    这个"Android_学习笔记.zip"文件很可能包含了一个详细的Android开发学习路径和关键知识点的总结。下面将基于这个主题,详细讲解Android开发的一些核心概念和技术。 首先,Android是Google开发的一款开源操作系统,...

    android\Android学习笔记

    ### Android学习笔记精要 #### 一、Android平台概述与特性 Android平台是谷歌推出的针对移动设备的操作系统,集成了操作系统、中间件和关键应用程序,为开发者提供了完整的开发环境。其核心特性包括: 1. **应用...

    android 学习笔记(全全整理)

    Android学习笔记全全整理,是针对想要深入理解并掌握Android开发技术的学习者们的一份宝贵资源。这份笔记涵盖了从基础到高级的多个方面,旨在帮助读者建立起完整的Android知识体系。以下将详细介绍其中可能包含的...

    android学习笔记1

    "Android学习笔记1"这个压缩包文件很可能是开发者在实践中积累的经验和代码示例的集合,对于初学者和有经验的开发者来说,都是宝贵的资源。这里,我们将深入探讨Android开发的一些关键概念和技术。 首先,Android是...

    MONO FOR ANDROID学习笔记全套

    【Mono for Android学习笔记全套】是一份详尽的资源,旨在帮助开发者掌握使用Mono和C#进行Android应用开发的技术。Mono是.NET框架的一个开源实现,它使得C#开发者能够在多种平台上,包括Android,编写和运行应用程序...

    android初级学习笔记

    在学习 Android 开发的过程中,理解 Activity 的生命周期、熟练掌握各种布局的使用、熟悉资源管理以及学会处理多媒体数据是至关重要的。随着经验的积累,你将能够开发出功能丰富的 Android 应用程序。

    java、linux、Android 学习笔记

    【Android学习笔记】 Android是一个开源的移动操作系统,主要应用于智能手机和平板电脑。它由Google主导并开源,基于Linux内核。学习Android开发,你需要熟悉Java或Kotlin语言,理解Android SDK、Android Studio...

    很好的android学习笔记

    【Android学习笔记】 Android是一种基于Linux内核的开源操作系统,主要应用于移动设备,如智能手机和平板电脑。这个“很好的android学习笔记”包含了作者在学习Android开发过程中积累的宝贵经验,旨在帮助初学者或...

    Android学霸学习笔记

    根据提供的文件内容,这是一份详细的Android学习笔记,涵盖了从基础入门到高级特性的各个知识点。以下是从这些内容中提取的知识点: 1. Android入门基础: - 建立第一个App:介绍如何创建Android项目和执行程序。 ...

    黎活明Android学习笔记

    根据给定的信息,“黎活明Android学习笔记”主要记录了Android开发的基础步骤和技术要点,包括安装Android开发环境、创建虚拟设备、构建简单的Android应用程序以及理解应用程序的目录结构等内容。接下来,我们将对...

    Android开发教程笔记完全版.zip

    以上只是Android开发教程笔记可能涵盖的部分内容,具体的学习过程中还会涉及更多高级主题,如动画、通知、推送服务、多媒体处理、蓝牙通信、安全性、国际化等。这份完全版的教程应该会详细讲解这些知识点,并提供...

    Android学习笔记总结初学者必看.rar_Android java_android

    在Android学习之旅中,初学者会遇到各种概念和实践技巧,这份"Android学习笔记总结初学者必看"的文档正是为了帮助他们系统性地掌握这一领域。以下是对这份压缩包内容的详细解读。 首先,Android是由Google开发的一...

    Android学习笔记(入门必看)

    ### Android学习笔记(入门必看) #### 一、Android简介 **Android** 是一个开源的操作系统,主要用于智能手机和平板电脑等移动设备。它由Google公司维护,并基于Linux内核进行开发。Android平台不仅包括操作系统...

    Android study notes 安卓学习笔记

    【Android学习笔记】是针对Android开发者的详尽学习资源,涵盖了Android开发的基础到高级概念,旨在帮助初学者和有经验的开发者深入理解Android操作系统的工作原理和应用开发技术。以下是一些核心知识点的概述: 1....

Global site tag (gtag.js) - Google Analytics