20.11.2016 Views

ANDROID APP

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

android:layout_height="wrap_content"<br />

android:orientation="horizontal"<br />

android:gravity="center_horizontal"><br />

<br />

<br />

<br />

กล้องถ่ายรูป<br />

171<br />

แอคทิวิตี้หลักของชุดคำสั่งนี้ประกอบด้วยการทำงานหลายอย่าง ในขั้นแรกเราจะกำหนดการ<br />

ทำงานของเลย์เอาต์ก่อน ดังนี้<br />

1. กำหนดหน้าต่างให้มีลักษณะขุ่นและแสดงแบบเต็มจอ (สำหรับอินสแตนซ์ที่เราสร้างขึ้นนี้<br />

จะถูกกำหนดให้ซ่อนไตเติ้ลบาร์และแถบ Notification)<br />

2. SurfaceView ที่ได้กำหนดไว้ในเลย์เอาต์ก่อนหน้านี้ (R.id.surface) ใช้เป็นพื้นที่วาง<br />

ส่วนแสดงภาพพรีวิวของกล้องถ่ายรูป โดยที่แต่ละ SurfaceView จะมี SurfaceHolder<br />

เพื่อใช้ควบคุมการทำงาน<br />

3. กำหนด LayoutInflater เพื่อให้เลย์เอาต์ย่อยอื่นๆ (cameraoverlay.xml) สามารถ<br />

แสดงผลในเลย์เอาต์หลักได้ (main.xml)<br />

ขั้นตอนต่อไปเป็นการกำหนดการทำงานแอคทิวิตี้เพื่อใช้สั่งให้กล้องถ่ายรูปทำงาน<br />

1. เพิ่ม onClickListener ลงไปในปุ่มที่แสดงอยู่ในเลย์เอาต์ cameraoverlay และเมื่อ<br />

ปุ่มถูกกด กล้องถ่ายรูปก็จะถ่ายรูป (mCamera.takePicture())<br />

2. การทำงานของเมธอด takePicture() นั้นจะต้องเรียกใช้เมธอดที่เกี่ยวข้องก่อนการ<br />

ทำงานดังนี้<br />

m ShutterCallback() - ใช้เพื่อสร้างเอฟเฟ็กต์ต่างๆ หลังจากการถ่ายรูปแล้ว เช่น<br />

การเล่นไฟล์เสียงเพื่อแจ้งให้ผู้ใช้รู้ว่าได้ถ่ายรูปไปแล้ว<br />

m PictureCallback() - ใช้เพื่อรับข้อมูลของรูปภาพแบบ Raw ในกรณีที่<br />

ฮาร์ดแวร์มีหน่วยความจำเพียงพอก็จะใช้เมธอดนี้ได้<br />

m PictureCallback() ชุดที่ 2 - ใช้เพื่อรับข้อมูลภาพแบบบีบอัด ซึ่งจะเรียกใช้<br />

เมธอด done() เพื่อจัดเก็บรูปภาพ<br />

ขั้นตอนต่อไปจะเป็นแอคทิวิตี้ที่ใช้ในการจัดเก็บรูปภาพที่ได้ถ่ายไว้<br />

1. ข้อมูลของรูปภาพที่ถูกบีบอัดแล้วจะเก็บอยู่ในตัวแปร tempdata และใช้คำสั่ง Bitmap-<br />

Factory เพื่อถอดรหัสข้อมูลจากชนิด ByteArray ไปเป็นออบเจ็กต์ Bitmap<br />

2. ใช้คำสั่ง Media Content Provider เพื่อจัดเก็บข้อมูลบิตแมพ และส่งค่ากลับไปเป็น<br />

URL ถ้าแอคทิวิตี้หลักถูกเรียกใช้งานโดยแอคทิวิตี้อื่นแล้วละก็ ค่าของ URL นี้จะเป็นค่า<br />

ของแอคทิวิตี้ที่ถูกเรียกใช้เพื่อจัดเก็บภาพ<br />

3. เมื่อเสร็จการทำงานข้างต้นแล้ว ให้เรียกใช้คำสั่ง finish() เพื่อยกเลิกแอคทิวิตี้

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!