項目中使用的—使用系統照相機拍照預覽上傳

來源:互聯網
上載者:User

布局檔案:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" android:gravity="center_horizontal">    <Button        android:id="@+id/button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="使用系統照相機拍照" android:onClick="click"/>    <ImageView        android:id="@+id/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>

代碼:

package uk.ac.essex.camerademo1;import java.io.File;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapFactory.Options;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.view.Display;import android.view.View;import android.widget.ImageView;public class Camerademo1Activity extends Activity {private static final int CAPTURE_PIC = 0;private ImageView imageView;private int width;private int height;private String imageFilePath;private Uri imageFileUri;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);imageView = (ImageView) findViewById(R.id.imageView);init();}private void init() {Display display = getWindowManager().getDefaultDisplay();width = display.getWidth();height = display.getHeight();imageFilePath = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ? Environment.getExternalStorageDirectory() + "/1.jpg" : null;imageFileUri = Uri.fromFile(new File(imageFilePath));}public void click(View view) {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//相機捕捉圖片的意圖intent.putExtra(MediaStore.EXTRA_OUTPUT, imageFileUri);//指定系統相機拍照儲存在imageFileUri所指的位置startActivityForResult(intent, CAPTURE_PIC);//啟動系統相機,等待返回}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (resultCode == RESULT_OK && requestCode == CAPTURE_PIC) {Options options = new Options();options.inJustDecodeBounds = true;//設定解碼只是為了擷取圖片的width和height值,而不是真正擷取圖片Bitmap bitmap = BitmapFactory.decodeFile(imageFilePath, options);//解碼後可以options.outWidth和options.outHeight來擷取圖片的尺寸int widthRatio = (int) Math.ceil(options.outWidth / width);//擷取寬度的壓縮比率int heightRatio = (int) Math.ceil(options.outHeight / height);//擷取高度的壓縮比率if (widthRatio > 1 || heightRatio > 1) {//只要其中一個的比率大於1,說明需要壓縮if(widthRatio>=heightRatio){//取options.inSampleSize為寬高比率中的最大值options.inSampleSize = widthRatio;}else{options.inSampleSize = heightRatio;}}options.inJustDecodeBounds = false;//設定為真正的解碼圖片bitmap = BitmapFactory.decodeFile(imageFilePath, options);//解碼圖片imageView.setImageBitmap(bitmap);}super.onActivityResult(requestCode, resultCode, data);}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.