您的位置:首页 > 其它

Camera调用二

2015-11-28 11:20 218 查看
package com.example.camera;

import java.io.File;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.provider.MediaStore;

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.view.Gravity;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener{

ImageView imageView;

String username = "radmany";

String path = null;

SelectPicPopupWindow menuWindow;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

imageView = (ImageView) findViewById(R.id.imageView1);

imageView.setOnClickListener(this);

//获取SD卡的绝对路径

path = Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator;

//以用户名命名

File file = new File(path+username+".jpg");

//如果图片存在,通过imageview显示

if (file.exists()) {

imageView.setImageURI(Uri.fromFile(file));

}

}

@Override

public void onClick(View v) {

menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick);

//显示窗口的位置

menuWindow.showAtLocation(imageView, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);

}

private OnClickListener itemsOnClick = new OnClickListener(){

@Override

public void onClick(View v) {

menuWindow.dismiss();

Intent intent = null;

switch (v.getId()) {

//点击拍张照

case R.id.button1:

//设置拍照后保存的位置

File file = new File(path+"temp.jpg");

//将数据转成uri对象

Uri uri = Uri.fromFile(file);

//隐式方式打开相机

intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

//打开相机时,给相机一个路径,拍照完成之后,保存到该路径

intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

//不反回数据

intent.putExtra("return-data", false);

//开启人脸识别

intent.putExtra("noFaceDetection", false);

startActivityForResult(intent, 0x99);

break;

case R.id.button2:

//从相册中选取,融合选择图片和裁剪的能

File file2 = new File(path+username+".jpg");

//转成uri

Uri uri2 = Uri.fromFile(file2);

//不打开相册

intent = new Intent(Intent.ACTION_GET_CONTENT);

//设置打开的类型

intent.setType("image/*");

//设置裁剪图片保存的路径

intent.putExtra(MediaStore.EXTRA_OUTPUT, uri2);

//不反回数据

intent.putExtra("return-data", false);

//crop=true,有这句话才能出来最后裁剪的页面

intent.putExtra("crop", "true");

//裁剪框的比例

intent.putExtra("aspectX", 1);

intent.putExtra("aspectY", 1);

//裁剪后的尺寸

// 裁剪后图片的尺寸

intent.putExtra("outputX", 200);

intent.putExtra("outputY", 200);

startActivityForResult(intent, 0x55);

default:

break;

}

}

};

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode==0x99&&resultCode==Activity.RESULT_OK) {

File user = new File(path+username+".jpg");

File temp = new File(path+"temp.jpg");

//打开截图功能

Intent i = new Intent("com.android.camera.action.CROP");

//设置图片资源和格式

i.setDataAndType(Uri.fromFile(temp), "image/jpeg");

//把截取后的图片保存到指定位置

i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(user));

//crop=true,有这句话才能出来最后裁剪的页面

i.putExtra("crop", "true");

//裁剪框比例

i.putExtra("outputX", 250);

i.putExtra("outputY", 200);

//是否有返回值

i.putExtra("return-data", true);

startActivityForResult(i, 0x89);

} else if (requestCode == 0x89 && resultCode == Activity.RESULT_OK) {

Bitmap bb = data.getParcelableExtra("data");//得到裁剪后的头像

imageView.setImageBitmap(bb);//设置头像的显示

} else if (requestCode == 0x55 && resultCode == Activity.RESULT_OK) {

Bitmap bm = BitmapFactory.decodeFile(path+username+".jpg");//从文件中加载图片

imageView.setImageBitmap(bm);//设置图片显示

}

};

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: