- 浏览: 197146 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
guoshijie1990:
写的不错
Android Https通信 -
xiaochi_84:
你好,我想问一下。为什么我在java工程里测试没有问题。但是到 ...
Android导出xls文件 -
Visual_chenpeng:
Android Https通信 -
jasonpeak:
求jasonpeak 写道我的为什么按返回键还是不关闭呢?求破 ...
Android关于ProgressDialog按返回键关闭 -
jasonpeak:
我的为什么按返回键还是不关闭呢?
Android关于ProgressDialog按返回键关闭
这是我封装的一个多媒体工具类,所有调用都是基于系统多媒体库的!
多媒体工具类:package com.team618.mediatest.cn;
import java.io.ByteArrayOutputStream; import java.io.File; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.text.format.Time; public class MediaFactory implements Constant{ static String nowtime = null; public static String mMediaFilePath; public static void takePhoto(Context context,String Path)//拍照功能 { getTime(); mMediaFilePath=Path+nowtime+".jpg"; Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File( Path, nowtime+".jpg"))); ((Activity)context).startActivityForResult(intent,PHOTOHRAPH); } public static void takePViedo(Context context,String Path)//摄像功能 { Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); ((Activity)context).startActivityForResult(intent, MEDIAHRAPH); } public static void takeAudio(Context context,String Path)//录音功能 { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("audio/*"); ((Activity)context).startActivityForResult(intent, MEDIAHRAPH); } /** @describe 这是一个创建多媒体文件的方法,可以调用系统封装的功能,在进行拍照,录音或者录像 @param 第一个参数是多媒体的类型,第二个参数是存储路径,第三个是文件的名字,第四个是文件的类型 例如: 图片类型 Media_Type="MediaStore.ACTION_IMAGE_CAPTURE" ,此时的文件类型一般为:File_Type=".jpg" 录音类型 Media_Type="MediaStore.Audio.Media.RECORD_SOUND_ACTION" ,此时的文件类型一般为:File_Type=".3gpp" 视频类型 Media_Type="MediaStore.ACTION_VIDEO_CAPTURE" ,此时的文件类型一般为:File_Type=".m4v"; @return 没有返回值 @throw 没有异常 */ /* private static void takeMedia(Context context,String Media_Type,String Path,String File_Name,String File_Type) { Intent intent = new Intent(Media_Type); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File( Path, File_Name+ File_Type))); ((Activity)context).startActivityForResult(intent, MEDIAHRAPH); } */ /** @describe 这是一个图像的裁剪功能,这个方法可以启动系统自带的相册,然后我们选择其中的照片进行裁剪 当裁剪完毕后,就会关闭系统的Activity,并返回处理后的图片的缓存 @param 没有参数传入 @return 返回值是一个处理过以后的位图Bitmap @throw 没有异常 */ public static void startPhotoZoom(Context context){ //图像裁剪,带有照片的选择功能, Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType(IMAGE_UNSPECIFIED); //设置类型 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 64); intent.putExtra("outputY", 64); intent.putExtra("return-data", true); ((Activity)context).startActivityForResult(intent, PHOTORESOULT); // } public static Bitmap getZoomphoto(Intent data) //图片裁剪的辅助方法,用来获得处理以后的结果照片 { Bundle extras = data.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0 - 100)压缩文件 return photo; // imageView.setImageBitmap(photo); } else { return null; } } /** * 多媒体文件的选择方法,参数闯入是需要查找的多媒体文件类型,返回值是该多媒体的Uri * * */ public static void selectMedia(Context context,String MEDIA_UNSPECIFIED) { Intent intent = new Intent(Intent.ACTION_PICK, null); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,MEDIA_UNSPECIFIED ); ((Activity)context).startActivityForResult(intent, SELECTMEDIA); } public static void selectAudio(Context context,String MEDIA_UNSPECIFIED) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("audio/*"); //String AUDIO_AMR = "audio/amr"; intent.setClassName("com.android.soundrecorder","com.android.soundrecorder.SoundRecorder"); ((Activity) context).startActivityForResult(intent,SELECTADUIO); } /*Uri的作用 * Cursor cursor = getContentResolver().query(uri, null, null, null, null); cursor.moveToFirst(); String imgNo = cursor.getString(0); // 图片编号 String imgPath = cursor.getString(1); // 图片文件路径 String imgSize = cursor.getString(2); // 图片大小 String imgName = cursor.getString(3); // 图片文件名 */ private static void getTime(){ Time t = new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone资料。 t.setToNow(); // 取得系统时间。 int year = t.year; int month = t.month+1; int date = t.monthDay; int hour = t.hour; // 0-23 int minute = t.minute; int second = t.second; nowtime=String.valueOf(year)+String.valueOf(month) +String.valueOf(date)+String.valueOf(hour) + String.valueOf(minute)+String.valueOf(second); } }
主Activity
package com.team618.mediatest.cn; import java.io.File; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MediaTestActivity extends Activity implements Constant { /** Called when the activity is first created. */ public File mMediaFile=null; //多媒体文件 public Uri mMediaUri=null; //多媒体文件的uri public Bitmap mZoomPhoto=null; //缩放后的图片文件 public String Path="/sdcard"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.media_test); Button takePhoto = (Button) findViewById(R.id.takePhoto);//拍照按钮 Button takeViedo = (Button) findViewById(R.id.takeViedo);//摄像按钮 Button takeAudio = (Button) findViewById(R.id.takeAudio);//录音按钮 Button selectPhoto = (Button) findViewById(R.id.selectPhoto);//选择多媒体文件按钮 Button zoomPhoto = (Button) findViewById(R.id.zoomPhoto);//图片裁减按钮 takePhoto.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub MediaFactory.takePhoto(MediaTestActivity.this,Path); } }); takeViedo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub MediaFactory.takePViedo(MediaTestActivity.this,Path); } }); takeAudio.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub MediaFactory.takeAudio(MediaTestActivity.this,Path); } }); selectPhoto.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub MediaFactory.selectMedia(MediaTestActivity.this,IMAGE_UNSPECIFIED); //MediaFactory.selectAudio(MediaTestActivity.this,IMAGE_UNSPECIFIED); } }); zoomPhoto.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub MediaFactory.startPhotoZoom(MediaTestActivity.this); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == NONE) return; //���� if (requestCode == PHOTOHRAPH){ mMediaFile=new File(MediaFactory.mMediaFilePath); } //�����ý���ļ� if (requestCode == MEDIAHRAPH){ Cursor cursor = getContentResolver().query(data.getData(), null, null, null, null); cursor.moveToFirst(); String mediaFilePath = cursor.getString(1); // ͼƬ�ļ�·�� mMediaFile=new File(mediaFilePath); } // ��ȡ���ͼƬ������Ƭ��Uri����Ƶ��Uri if (requestCode == SELECTMEDIA) { mMediaUri=data.getData(); Cursor cursor = getContentResolver().query(mMediaUri, null, null, null, null); cursor.moveToFirst(); String mediaFilePath = cursor.getString(1); // ͼƬ�ļ�·�� Log.i("path",mediaFilePath); } if (requestCode == SELECTADUIO) { mMediaUri=data.getData(); Log.i("path",mMediaUri.toString());//����ļ���·�� } // �õ�ͼƬ���Ŵ����� if (requestCode == PHOTORESOULT) { mZoomPhoto=MediaFactory.getZoomphoto(data); } super.onActivityResult(requestCode, resultCode, data); } }
常量类
package com.team618.mediatest.cn; public interface Constant { public static final int NONE=0; public static final int PHOTOHRAPH = 1;// 创建多媒体文件 public static final int MEDIAHRAPH = 2;// 创建多媒体文件 public static final int SELECTMEDIA =3; // 选择多媒体文件 public static final int SELECTADUIO=4; public static final int PHOTORESOULT=5;// 图片截图处理结果 public static final String IMAGE_UNSPECIFIED = "image/*"; public static final String VIEDO_UNSPECIFIED = "viedo/*"; public static final String AUDIO_UNSPECIFIED = "audio/*"; }
xml布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拍照" android:id="@+id/takePhoto"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="视屏" android:id="@+id/takeViedo"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="录音" android:id="@+id/takeAudio"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="找图片" android:id="@+id/selectPhoto"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="截图" android:id="@+id/zoomPhoto" /> </LinearLayout>
注意添加录音权限 <uses-permission android:name="android.permission.RECORD_AUDIO">
</uses-permission>
发表评论
-
Android获取设备信息
2012-11-22 00:10 1340转http://blog.csdn.net/gumanr ... -
Android列表索引实现
2012-07-15 10:47 6638最近做一个项目用到了列表索引,所以在网上找了一下,发现一个博客 ... -
Android开发环境搭建(Windows)
2012-07-03 13:37 762什么都不说来,直接下载附件好了,这个图文的不好发布 -
Linux下Android环境搭建
2012-07-03 13:34 1187--以Ubuntu为例 Linux下Android环境 ... -
Android ListView 滑动背景为黑色的解决办法
2012-06-28 22:08 1015转至:http://blog.163.com/zh ... -
Android蓝牙开发
2012-06-26 15:38 1468今天查了一些资料,然后发现一篇文章挺好,关于蓝牙的,原文网址: ... -
Android自定义对话框
2012-06-22 11:36 2455这时我封装的一个对话框工具类 package com. ... -
Android语音采集
2012-06-18 10:55 15473Android端的语音采集主要是调用AudioRecord,首 ... -
Android语音识别
2012-06-18 09:28 2230Android由于有了Google的支持,那么他的语音识别做起 ... -
Android监控
2012-06-08 20:04 1433Android的监控一般都是需要用到Jni的,然后进行NDK编 ... -
Android视频播放
2012-05-24 19:55 1857视频播放优好多种,一种是播放系统可以播放的视频文件,一种是播放 ... -
重写android返回键
2012-05-24 19:23 21872在Activity里面加入下面代码: @Overrid ... -
Android图像处理工具类
2012-04-09 09:37 2479还是最近整理代码、、发现了一个师兄写的图片工具类,感觉还是蛮有 ... -
Android导出xls文件
2012-04-08 15:45 6539整理硬盘的时候找到了这些代码,看了一下,发现还有点用处,所以就 ... -
android的文字跑马灯效果
2012-04-03 21:04 7271今天问了解决文本内容过长的显示问题,而用了一个android自 ... -
Android超级简单的TabView实现
2012-04-03 20:56 7125可能很多人都有想要实现一个导航栏,但是不知道改怎么弄,因为an ... -
ImageView的属性android:scaleType
2012-04-03 20:04 2001ImageView的属性android:scaleType ... -
关于Android程序的全屏显示
2012-04-03 19:53 978对于Android开发来说,全屏和无标题是我们常用的几行代码, ... -
Android文件下载
2012-03-19 16:45 1321嘿嘿,也不知道什么时候写的代码,清理硬盘的时候发现了,而且还能 ... -
Android视图的截图
2012-03-19 16:38 6860在pc上的截图软件很多,但是android上的比较少,所以就自 ...
相关推荐
Android调用手机多媒体,实现手机播放、拍照和相册等功能
第9章“Android的多媒体系统”,介绍Android的多媒体系统的核心部分,包括Android中多媒体系统的业务、结构、多媒体系统的核心框架、OpenCore系统结构和使用等内容。 第10章“Android的电话部分”,介绍Android...
Android 系统架构从下到上依次是 Linux 内 核,本地库,应用框架层和应用层,我们可以看到 MediaFramework 处于本地库 Libraries 这一层,该层不是用 java 实现的,一般是 C/C++,它们通过 java 的 JNI 方 式调用。
精通ANDROID 5多媒体开发.part2 由于上传限制,此书籍采用分卷压缩,需要与 精通ANDROID 5多媒体开发.part1一起才能正常解压使用
《Android多媒体开发高级编程——为智能手机和平板电脑开发图形、音乐、视频和富媒体应用》使用清晰、直观的示例介绍了Android SDK中丰富的多媒体功能,有助于您开发能够创建、播放和共享多媒体的优秀Android应用...
Android系统使用的Linux内核包含了一些专用驱动,例如Logger、Binder、Ashmem、Wakelock、Low-Memory Killer和Alarm等,这些Android专用驱动构成了Android运行时的基石。Android运行时从下到上又包括了HAL层、应用...
Android-MediaPlayer上层应用程序使用JAVA语言编写,实现逻辑处理;JAVA程序通过调用底层媒体库来实现具体的音视频文件和网络视频播放; JAVA程序通过JNI接口实现对底层媒体库libmedia.so的调用; MediaPlayer在运行...
该文档介绍了android多媒体开发及如何使用多媒体开发
一个android多媒体开发实例包,里面包含了图像、音频处理,特别还包含了快速傅立叶变换的使用。该开发包为本人根据Pro Android Media一书英文版而编写的实例,参考了随书代码,并补充了部分函数说明。该代码对有意...
调用Android系统自带功能,包括多媒体、短信、通话。
精通ANDROID 5多媒体开发.part1 由于上传限制,此书籍采用分卷压缩,需要与 精通ANDROID 5多媒体开发.part2一起才能正常解压使用
第9章“Android的多媒体系统”,介绍Android的多媒体系统的核心部分,包括Android中多媒体系统的业务、结构、多媒体系统的核心框架、OpenCore系统结构和使用等内容。 第10章“Android的电话部分”,介绍Android...
通过Intent调用Android系统自带Activity界面实现多媒体功能的例子,包括录制、选择、播放音视频,以及拍照、选择、查看照片。这种方式代码简单,运行稳定;但界面固定,不够灵活。系统自带Activity也包括从外部存储...
本书主要围绕着Android多媒体编程进行,纵向上,从共享内存、IPC通信、HAL、原生服务、JNI调用,以及多媒体的图像、音频、视频框架等多个层次和子系统着手;横向上,贯穿了移动互联网、Android体系应用框架、...
Android 项目是使用 Android 操作系统和相关开发工具开发的一款移动应用程序。Android 平台提供了丰富的功能和接口,开发人员可以使用 Java 或 Kotlin 等编程语言编写 Android 应用程序。Android 项目也可以是针对...
这是一个简单的Android系统开发应用,可以播放MP3格式的文件,通过修改代码可以支持更多的音频播放,播放时会显示同名的jpg图片;也可以播放MP4和3gp格式的视频(因为基本Android接口只支持这两种格式)注:程序是一...
使用Android技术实现的简单的多媒体播放器(服务端+客户端+数据库),平台为eclipse,可以作为毕业设计,课程设计等的参考模板,希望大家好好学习,争取更上一层楼。
Android的多媒体核心OpenCore的介绍,非常适合入门使用
众多的娱乐方式少不了强大的多媒体功能支持,而Android在这方面做得非常出色。 本期带来的多媒体播放器,可以同时享受听音乐和看视频的乐趣,融合了音乐播放器和网络视频播放器,并且进行完善优化。相对上一版本有...