基本信息
源码名称:android 照片拍摄 录音等功能
源码大小:9.31KB
文件格式:.java
开发语言:Java
更新时间:2013-10-31
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
package example.test1; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.Date; import android.content.ContentResolver; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.hardware.Camera; import android.hardware.Camera.PictureCallback; import android.hardware.Camera.ShutterCallback; import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import android.view.Display; import android.view.Surface; import android.view.SurfaceHolder; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; /* public class CBCamera { static CBCamera m_instance; static final String TAG = "CameraDemo"; Camera m_camera; WindowManager m_windowManager; ContentResolver m_contentResolver; public static CBCamera instance() { if(m_instance == null) { m_instance = new CBCamera(); } return m_instance; } private CBCamera() { open(); } public void setWindowManager(WindowManager windowManager) { m_windowManager = windowManager; } public void setContentResolver(ContentResolver contentResolver) { m_contentResolver = contentResolver; } public void initialPreview(SurfaceHolder holder) { try { if(m_camera != null) { m_camera.setPreviewDisplay(holder); } } catch(Exception ex) { ex.printStackTrace(); } } public void startPreview(int width, int height) { if(m_camera != null) { Camera.Parameters parameters = m_camera.getParameters(); Display display = m_windowManager.getDefaultDisplay(); if(display.getRotation() == Surface.ROTATION_0) { parameters.setPreviewSize(height, width); m_camera.setDisplayOrientation(90); } if(display.getRotation() == Surface.ROTATION_90) { parameters.setPreviewSize(width, height); } if(display.getRotation() == Surface.ROTATION_180) { parameters.setPreviewSize(height, width); } if(display.getRotation() == Surface.ROTATION_270) { parameters.setPreviewSize(width, height); m_camera.setDisplayOrientation(180); } //parameters.setPreviewSize(width, height); m_camera.setParameters(parameters); m_camera.startPreview(); } } public void stopPreview() { if(m_camera != null) { m_camera.stopPreview(); } } public void takePicture() { if(m_camera != null) m_camera.takePicture(shutterCallback, rawCallback, jpegCallback); } public void open() { if(m_camera == null) m_camera = Camera.open(); } public void release() { if(m_camera != null) { m_camera.release(); m_camera = null; } } ShutterCallback shutterCallback = new ShutterCallback() { public void onShutter() { Log.d(TAG, "onShutter'd"); } }; // Handles data for raw picture PictureCallback rawCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { Log.d(TAG, "onPictureTaken - raw"); } }; // Handles data for jpeg picture PictureCallback jpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { try { Bitmap bitmapPicture = BitmapFactory.decodeByteArray(data, 0, data.length); String path = Environment.getExternalStorageDirectory().toString(); String filename; Date date = new Date(0); SimpleDateFormat sdf = new SimpleDateFormat ("yyyyMMddHHmmss"); filename = sdf.format(date); OutputStream fOut = null; //File file = new File(path, "/DCIM/" filename ".jpg"); File file = new File(path, "/" filename ".jpg"); fOut = new FileOutputStream(file); //FileOutputStream out = new FileOutputStream(String.format("/sdcard/DCIM/Signatures/%d.jpg", System.currentTimeMillis())); bitmapPicture.compress(Bitmap.CompressFormat.JPEG, 0, fOut); fOut.flush(); fOut.close(); MediaStore.Images.Media.insertImage(m_contentResolver,file.getAbsolutePath(),file.getName(),file.getName()); } catch(Exception ex) { ex.printStackTrace(); } finally { camera.startPreview(); } Log.d(TAG, "onPictureTaken - jpeg"); } }; } */ import java.io.File; import java.text.SimpleDateFormat; import java.util.*; import android.app.*; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.*; import android.widget.*; public class MainActivity extends Activity implements OnClickListener { private static final int RESULT_CAPTURE_IMAGE = 1;// 照相的requestCode private static final int REQUEST_CODE_TAKE_VIDEO = 2;// 摄像的照相的requestCode private static final int RESULT_CAPTURE_RECORDER_SOUND = 3;// 录音的requestCode private String strImgPath = "";// 照片文件绝对路径 private String strVideoPath = "";// 视频文件的绝对路径 private String strRecorderPath = "";// 录音文件的绝对路径 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_main); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case RESULT_CAPTURE_IMAGE://拍照 if (resultCode == RESULT_OK) { Toast.makeText(this, strImgPath, Toast.LENGTH_SHORT).show(); } break; case REQUEST_CODE_TAKE_VIDEO://拍摄视频 if (resultCode == RESULT_OK) { Uri uriVideo = data.getData(); Cursor cursor=this.getContentResolver().query(uriVideo, null, null, null, null); if (cursor.moveToNext()) { /** _data:文件的绝对路径 ,_display_name:文件名 */ strVideoPath = cursor.getString(cursor.getColumnIndex("_data")); Toast.makeText(this, strVideoPath, Toast.LENGTH_SHORT).show(); } } break; case RESULT_CAPTURE_RECORDER_SOUND://录音 if (resultCode == RESULT_OK) { Uri uriRecorder = data.getData(); Cursor cursor=this.getContentResolver().query(uriRecorder, null, null, null, null); if (cursor.moveToNext()) { /** _data:文件的绝对路径 ,_display_name:文件名 */ strRecorderPath = cursor.getString(cursor.getColumnIndex("_data")); Toast.makeText(this, strRecorderPath, Toast.LENGTH_SHORT).show(); } } break; } } /** * 照相功能 */ private void cameraMethod() { Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); strImgPath = Environment.getExternalStorageDirectory().toString() "/CONSDCGMPIC/";//存放照片的文件夹 String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) ".jpg";//照片命名 File out = new File(strImgPath); if (!out.exists()) { out.mkdirs(); } out = new File(strImgPath, fileName); strImgPath = strImgPath fileName;//该照片的绝对路径 Uri uri = Uri.fromFile(out); imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); startActivityForResult(imageCaptureIntent, RESULT_CAPTURE_IMAGE); } /** * 拍摄视频 */ private void videoMethod() { Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); startActivityForResult(intent, REQUEST_CODE_TAKE_VIDEO); } /** * 录音功能 */ private void soundRecorderMethod() { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("audio/amr"); startActivityForResult(intent, RESULT_CAPTURE_RECORDER_SOUND); } /** * 提示信息 * @param text * @param duration */ private void showToast(String text, int duration) { // Toast.makeText(ProblemReport.this, text, duration).show(); } @Override public void onClick(View arg0) { // TODO Auto-generated method stub } }