iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
Mobile Development

Android 從零開始系列 第 16

[Day16] Intent照相機

  • 分享至 

  • xImage
  •  

這次要來教的是如何使用Intent來連接上手機內的照相機並進行獲取圖片和顯示圖片的一系列功能。

XML

先簡單設計出一個頁面,寫出一個Button作為觸發Intent照相機的元件,並寫出一個ImageView來顯示圖片就好。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"/>
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="開啟相機"/>
</RelativeLayout>

JAVA程式

設計好XML之後,就能開始製作照相的功能了。
先做好按鈕的監聽器,接著在觸發功能輸入以下程式碼:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);透過參數MediaStore.ACTION_IMAGE_CAPTURE來開啟照相機

startActivityForResult(intent, CAMERA_REQUEST);執行照相機並將結果傳遞到onActivityResult,CAMERA_REQUEST要求代碼,是使用者設定的整數引數,接收Intent結果時,會回傳同一要求代碼,以便識別是哪一個Intent回傳的結果。

public void onActivityResult() 接收選取後的結果並以.getData()來取得內容,之後再根據使用者的需求來決定要做甚麼處理。

到了onActivityResult()裡面以Bitmap來接受剛剛拍下照片的位址並且轉化為圖片,然後再以imageView.setImageBitmap(bitmap);來顯示圖片就完成了

public class MainActivity extends AppCompatActivity {
    Button button;
    ImageView imageView;
    int CAMERA_REQUEST = 100;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();
        setContentView(R.layout.activity_main);

        imageView = findViewById(R.id.imageView);
        button = findViewById(R.id.button);
        //指定監聽的物件
        button.setOnClickListener(listener);
    }

    //監聽器
    Button.OnClickListener listener= new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, CAMERA_REQUEST);
        }
    };

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
        super.onActivityResult(requestCode, resultCode, resultData);
        if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {

            Bitmap bitmap = (Bitmap) resultData.getExtras().get("data");
            imageView.setImageBitmap(bitmap);
        }
    }
}

成果

圖片


上一篇
[Day15] Intent選取圖片
下一篇
[Day17] Android Webview - 幫網站建立 App
系列文
Android 從零開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言