Android程序調用攝像頭

openkk 12年前發布 | 79K 次閱讀 Android Android開發 移動開發

很多開發者都想在程序用來調用攝像頭,并對拍出的照片進行處理。首先先對程序的進行一下預覽

Android程序調用攝像頭 Android程序調用攝像頭 Android程序調用攝像頭

首先先對主頁面進行設計,這里很簡單,只是加了個按鈕和一張圖片

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/camera" />




    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

</LinearLayout>
接下來就是對按鈕事件進行處理,按下按鈕的時候會調用本機攝像頭
//圖片存入地址
        imageFilePath = Environment.getExternalStorageDirectory()
                .getAbsolutePath() + "/mypicture.jpg";
        File imageFile = new File(imageFilePath);
        Uri imageFileUri = Uri.fromFile(imageFile);

        Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageFileUri);
        startActivityForResult(i, CAMERA_RESULT);
Intent直接調用了本機的拍照程序,并把拍的圖片存在內存卡里,接下來就是要在我們自己的程序里顯示拍的照片了
這里我們直接用了Activity里的onActivityResult這個方法,這個方法是對Activity返回結果的處理
@Override
    protected void onActivityResult(int requestCode, int resultCode,
            Intent intent) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, intent);

        //如果拍照成功
        if (resultCode == RESULT_OK) {

            // Bundle extras = intent.getExtras();
            // Bitmap bmp = (Bitmap)extras.get("data");

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

            //取得屏幕的顯示大小
            Display currentDisplay = getWindowManager().getDefaultDisplay();
            int dw = currentDisplay.getWidth();
            int dh = currentDisplay.getHeight();

            //對拍出的照片進行縮放
            BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
            bmpFactoryOptions.inJustDecodeBounds = true;
            Bitmap bmp = BitmapFactory.decodeFile(imageFilePath,
                    bmpFactoryOptions);

            int heightRatio = (int) Math.ceil(bmpFactoryOptions.outHeight
                    / (float) dh);
            int widthRatio = (int) Math.ceil(bmpFactoryOptions.outWidth
                    / (float) dw);

            if (heightRatio > 1 && widthRatio > 1) {

                if (heightRatio > widthRatio) {

                    bmpFactoryOptions.inSampleSize = heightRatio;
                } else {
                    bmpFactoryOptions.inSampleSize = widthRatio;
                }

            }

            bmpFactoryOptions.inJustDecodeBounds = false;
            bmp = BitmapFactory.decodeFile(imageFilePath, bmpFactoryOptions);

            imv.setImageBitmap(bmp);

        }
    }
這里我們就完成了對本機攝像頭的調用,其實在這里主要要學習的是 startActivityForResult和onActivityResult這兩個方法,一個是調用Activity并將結果返回給調用的 Activity,一個就是處理返回的數據了。
轉自:http://blog.csdn.net/kangkangz4/article/details/7253822

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!