package cn.m15.test;
import java.io.ByteArrayOutputStream;
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public
class testActivity
extends Activity {
public
static
final
int NONE = 0;
public
static
final
int PHOTOHRAPH = 1;
// 拍照
public
static
final
int PHOTOZOOM = 2;
// 縮放
public
static
final
int PHOTORESOULT = 3;
// 結果
public
static
final String IMAGE_UNSPECIFIED =
"p_w_picpath/*";
ImageView p_w_picpathView =
null;
Button button0 =
null;
Button button1 =
null;
@Override
public
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
p_w_picpathView = (ImageView) findViewById(R.id.p_w_picpathID);
button0 = (Button) findViewById(R.id.btn_01);
button1 = (Button) findViewById(R.id.btn_02);
button0.setOnClickListener(
new OnClickListener() {
@Override
public
void onClick(View v) {
Intent intent =
new Intent(Intent.ACTION_PICK,
null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);
startActivityForResult(intent, PHOTOZOOM);
}
});
button1.setOnClickListener(
new OnClickListener() {
@Override
public
void onClick(View v) {
Intent intent =
new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(
new File(Environment.getExternalStorageDirectory(),
"temp.jpg")));
startActivityForResult(intent, PHOTOHRAPH);
}
});
}
@Override
protected
void onActivityResult(
int requestCode,
int resultCode, Intent data) {
if (resultCode == NONE)
return;
// 拍照
if (requestCode == PHOTOHRAPH) {
//設置文件保存路徑這裏放在跟目錄下
File picture =
new File(Environment.getExternalStorageDirectory() +
"/temp.jpg");
startPhotoZoom(Uri.fromFile(picture));
}
if (data ==
null)
return;
// 讀取相冊縮放圖片
if (requestCode == PHOTOZOOM) {
startPhotoZoom(data.getData());
}
// 處理結果
if (requestCode == PHOTORESOULT) {
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)壓縮文件
p_w_picpathView.setImageBitmap(photo);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
public
void startPhotoZoom(Uri uri) {
Intent intent =
new Intent(
"com.android.camera.action.CROP");
intent.setDataAndType(uri, 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);
startActivityForResult(intent, PHOTORESOULT);
}
}
<?
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"
/>
<
ImageView
android:id
="@+id/p_w_picpathID"
android:adjustViewBounds
="true"
android:maxWidth
="50dip"
android:maxHeight
="50dip"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
/>
<
Button
android:id
="@+id/btn_01"
android:layout_height
="50dip"
android:text
="相冊"
android:layout_width
="150dip"
/>
<
Button
android:id
="@+id/btn_02"
android:layout_height
="50dip"
android:text
="拍照"
android:layout_width
="150dip"
/>
</
LinearLayout
>