วันศุกร์ที่ 21 กันยายน พ.ศ. 2555

Android Camera

-->


Android Camera Preview


The camera is the most visible and most used sensor in an Android device. It is a selling point for most consumers, and the capabilities are getting better with each generation. Image-processing applications normally work on an image after it is taken, but other applications, such as augmented reality, utilize the camera in real-time with overlays.
There are two ways to access the camera from an application.The first is by declaring
an implicit intent.
The implicit intent launches the default camera interface:
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivity(intent);

The second way leverages the Camera class, which provides more flexibility in the settings.This creates a custom camera interface, which is the focus of the examples that follow. Camera hardware access requires explicit permission in the AndroidManifest XML file:
<uses-permission android:name="android.permission.CAMERA" />

This is implied in the following section.

Customizing the Camera

Control of the camera is abstracted into various components in the Android system:

  • Camera class—Accesses the camera hardware
  • Camera.Parameters class—Specifies the camera parameters such as picture size, picture quality, flash modes, and method to assign Global Positioning System (GPS) location
  • Camera Preview methods—Sets the camera output display and toggles streaming video preview to the display
  • SurfaceView class—Dedicates a drawing surface at the lowest level of the view hierarchy as a placeholder to display the camera preview
CameraPreviewActivity.java Code

package android.example.camerapreview;

import android.os.Bundle;
import android.app.Activity;
import android.view.Display;
import android.view.Menu;
import android.view.SurfaceView;
import android.view.Window;

public class CameraPreviewActivity extends Activity {

      private int viewWidth = 320;
    private int viewHeight = 240;
           
    private SurfaceView cameraPreview;
           

    @Override
    public void onCreate(Bundle savedInstanceState) {
               
       super.onCreate(savedInstanceState);
       requestWindowFeature(Window.FEATURE_NO_TITLE);
               
       calculateDisplayDimensions();                   
       cameraPreview = new CameraPreview(this);
       setContentView(cameraPreview);
      
    }
           
    private void calculateDisplayDimensions() {
       Display display = getWindowManager().getDefaultDisplay();
       viewWidth = display.getWidth();
       viewHeight = display.getHeight();
    }   
      
}


CameraPreview.java Code


package android.example.camerapreview;

import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.hardware.Camera;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
       
      public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
       
          private SurfaceHolder holder;
          private Camera camera;
       
          public CameraPreview(Context context) {
              super(context);
              holder = getHolder();
              holder.addCallback(this);
              holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
          }
       
          //@Override
          public void surfaceChanged(SurfaceHolder holder2, int format, int w, int h) {
              Camera.Parameters parameters = camera.getParameters();
              parameters.setPreviewSize(w, h);
              camera.setParameters(parameters);
              camera.startPreview();
          }
       
          //@Override
          public void surfaceCreated(SurfaceHolder holder1) {
              try {
                  camera = Camera.open();
                  camera.setPreviewDisplay(holder1);
              }
              catch (Exception e) {
                  Log.i("Exception surfaceCreated()", "e=" + e);
                  camera.release();
                  camera = null;
              }
       
      }
                      
          //@Override
          public void surfaceDestroyed(SurfaceHolder arg0) {
              camera.stopPreview();
              camera.release();
              camera = null;
          }
          
      }


AndroidMainifest.xml Code


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="android.example.camerapreview"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".CameraPreviewActivity"
            android:label="@string/title_activity_camera_preview" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
   
     <!-- We will request access to the camera, saying we require a camera
         of some sort but not one with autofocus capability. -->
    <uses-permission android:name="android.permission.CAMERA"/>
      <uses-permission android:name="android.permission.INTERNET" />
       
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
    
</manifest>



Download Android Camera Preview Example code




Android Control ควบคุมอุปกรณ์ต่างๆ ด้วย Android

สอนเขียน Android  สอนเขียนโปรแกรม Android
http://androidcontrol.blogspot.com/2012/01/beginning-android-training-android.html




สอนเขียน Android  สอนเขียนโปรแกรม Android แบบ Online

รับสอนเขียนโปรแกรม Android App สอนแบบ online สอนสด ตัวต่อตัว หรือ เป็นกลุ่ม ได้ทั่วประเทศ กำหนดเวลาเรียนได้
การเรียน Android App แบบ online สามารถกำหนดเวลาเรียน เองได้ ตามแต่ตกลงกัน
( รับสอน นอกสถานที่ แบบเป็น กลุ่ม ทั่วประเทศ )

แต่ละ Course ขึ้นอยู่กับพื้นฐานที่มี นะครับ

Course
1.JAVA Programming สำหรับผู้ที่ยังไม่มีพื้นฐานทางด้าน การเขียนโปรแกรม JAVA
เรียน 3-4 ครั้ง ครั้งละ 2 ชั่วโมง  

2.Beginning Android Development เริ่มต้นการพัฒนาด้วย Android ( ต้องมีพื้นฐาน JAVA แล้ว )
เรียน 5-6 ครั้ง ครั้งละ 2 ชั่วโมง 
เรียนจบคอร์สนี้ ก็สามารถทำ Application ได้แล้ว

3.Android Application สอนตามความต้องการในการเขียนโปรแกรม ใช้งานจริง เช่น โปรแกรมใช้งานด้านต่างๆ
ระยะเวลา และ ค่าเรียน ตามแต่ความยากง่ายของโปรแกรม ซึ่งอาจจะรวมสอน JAVA Programming ด้วยสำหรับผู้เริ่มต้นเลย
ดังนั้น ราคาสอน จะขึ้นอยู่กับ สเปคงาน

โปรแกรมที่ใช้ทำการเรียน Team Viewer  Version ล่าสุด Version 8
Meeting ID จะแจ้งให้ก่อนเรียน ผ่านทาง email sms Line หรือ อื่นๆ ตามสะดวก
ใช้ Tab Meeting ใส่ Meeting ID และใส่ชื่อ
แล้ว Join Meeting

ติดต่อ amphancm@gmail.com

ไม่มีความคิดเห็น:

แสดงความคิดเห็น