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() เพื่อยกเลิกแอคทิวิตี้