camera 初學者入門 handler preview focus canvas 圖片存放 及數據庫調用

 

 

由於要用到數據庫

所有先要添加mysql-connector-java-5.0.3-bin.jar到路徑

選擇工程右鍵選擇java bulid path 右邊點擊add external jar 選擇文件

 

首先這是主類

 

package com.example.mytestcam;

 

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.List;

 

 

import android.app.Activity;

import android.content.Intent;

import android.content.pm.ActivityInfo;

import android.graphics.PixelFormat;

import android.hardware.Camera;

import android.hardware.Camera.AutoFocusCallback;

import android.hardware.Camera.Parameters;

import android.hardware.Camera.PictureCallback;

import android.hardware.Camera.PreviewCallback;

import android.os.Bundle;

import android.os.Environment;

import android.os.Handler;

import android.os.Message;

import android.util.DisplayMetrics;

import android.util.Log;

import android.view.Menu;

import android.view.MenuInflater;

import android.view.MenuItem;

import android.view.SurfaceHolder;

import android.view.SurfaceHolder.Callback;

import android.view.SurfaceView;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.Window;

import android.view.WindowManager;

import android.widget.Button;

import android.widget.RelativeLayout;

 

publicclassMyTestCamextendsActivityimplementsCallback {

 

   String mySdcard;

   String myWorkDir="/myworkdir";

   publicStringmJpgFileName="noPic";

   publicStringmSecondJpgFileName="noPic";

   public  final StringTAG="TAG";

   publiclongtime;

    SurfaceViewsurfaceView;

    SurfaceHoldersurfaceHolder;

    Buttonbtn,btn2;

    HandlermyHander;

    CameramCamera;

    booleanisPreview=false;

    booleanmSecondPic=false;

    Parametersparmeters;

    RelativeLayoutrelativeLayout;

  

    //畫邊框的View

    MyRectViewmyView;

   String [] mJpgFileNameArray=newString[2];

   Test_SQL db;

 

   

   @Override

   publicvoidonCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

       

    getWindow().setFormat(PixelFormat.TRANSLUCENT);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

    WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        setContentView(R.layout.activity_my_test_cam);

       

    

       

        DisplayMetrics dm = new  DisplayMetrics();

    getWindowManager().getDefaultDisplay().getMetrics(dm);

    int screenWidth = dm.widthPixels;

    int screenHeight= dm.heightPixels;

     LOG("screenWidth="+screenWidth+"screenHeight="+screenHeight);

       

        surfaceView=(SurfaceView)findViewById(R.id.surface_view);

        btn=(Button)findViewById(R.id.takPic);

        btn2=(Button)findViewById(R.id.showPic);

        btn.setOnClickListener(onclicklistener);

        btn2.setOnClickListener(onclicklistener);

       

       mySdcard=Environment.getExternalStorageDirectory().toString();

       myWorkDir =String.format("%s%s",mySdcard,myWorkDir);

       surfaceHolder=surfaceView.getHolder();

       surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

       surfaceHolder.addCallback(this);

       myHander=new MyHandler();

       myHander.sendEmptyMessage(0);

      

       myView=new MyRectView(MyTestCam.this);

       relativeLayout=(RelativeLayout)findViewById(R.id.relativeLayout);

       relativeLayout.addView(myView);

      

      

       db=new Test_SQL(this);

      

      

       if(!createWorkDir(myWorkDir))

       {

         LOG("can't open Work Dir");

       }

      

 

   }

//                           這段是測試 android的生命週期的

   

   protectedvoidonDestroy() {

    LOG(TAG,"onDestroy()");

    super.onDestroy();

    }

 

    @Override

    protectedvoid onPause() {

    LOG(TAG,"onPause()");

    super.onPause();

    }

 

    @Override

    protectedvoid onRestart() {

    LOG(TAG,"onRestart()");

    super.onRestart();

    }

 

    @Override

    protectedvoid onResume() {

    LOG(TAG,"onResume()");

    super.onResume();

    }

 

    @Override

    protectedvoid onStart() {

    LOG(TAG,"onStart()");

    super.onStart();

    }

 

    @Override

    protectedvoid onStop() {

    LOG(TAG,"onStop()");

    super.onStop();

    }

   

   publicstaticfinalinttakeMyFirstPic=0x001;

   publicstaticfinalinttakeMySecondPic=0x002;

   //注意handler的用法 oncreate裏面初始化 然後

   //   當有handler發送信息時 這是由系統調用的 

   publicclassMyHandlerextendsHandler

   {

    MyHandler(){}

 

        publicvoid handleMessage(Messagemsg)

        {

            switch (msg.what) {

            casetakeMyFirstPic:

                LOG(" case takeMyFirstPic: ");

                if (mCamera !=null)

                {

                    mCamera.setPreviewCallback(null);

                    //拍照

                    mCamera.takePicture(null,null,JpegCallBack);

                }

                break;

            casetakeMySecondPic:

                LOG(" case takeMySecondPic: ");

                if (mCamera !=null)

                {

                    mCamera.setPreviewCallback(null);

                    mCamera.takePicture(null,null,JpegCallBack);

                }

                break;

            default:

                ;

            }

        }

   }

   

   OnClickListener onclicklistener=newOnClickListener()

   {

        @Override

        publicvoid onClick(View v)

        {

            switch(v.getId()){

            //   照相按鈕 點擊後

            case R.id.takPic:

            mSecondPic=false;

            //獲得系統時間

            time=System.currentTimeMillis();

            mJpgFileName=String.format("%s/%d_1.jpg",myWorkDir,time);

            LOG(mJpgFileName);

            mSecondJpgFileName=String.format("%s/%d_2.jpg",myWorkDir,time);

            db.open();

            db.insertPicName(mJpgFileName,mSecondJpgFileName);

            db.close();

//          在這裏調用 Focus對焦的功能             

            mCamera.autoFocus(focusCallback);

            break;

            //顯示圖片  跳到另外的一個activity  查看intent相關資料

            case R.id.showPic:

                 Intent intent=new Intent();

                 Bundle bundle=new Bundle();

                 mJpgFileNameArray[0]=mJpgFileName;

                 mJpgFileNameArray[1]=mSecondJpgFileName;

                 bundle.putStringArray("strr",mJpgFileNameArray);

               

                 intent.putExtras(bundle);             

                 LOG("intent.putExtras(bundle);");

                  intent.setClass(MyTestCam.this,MyIntentView.class);               

                  startActivity(intent);

                  break;

            }

        }

   };

   protectedAutoFocusCallbackfocusCallback =newAutoFocusCallback() {

       

        @Override

        publicvoid onAutoFocus(boolean success, Camera camera)

        {

            // handler 發送消息   153 行接收  也就是 classmyhandler 裏面接收的

            myHander.sendEmptyMessage(takeMyFirstPic);

           

        }

    };

    protected PictureCallbackJpegCallBack =new PictureCallback() {

       

        @Override

        publicvoid onPictureTaken(byte[] data, Camera camera)

        {

           

            //下面是控制拍的第幾張照片

            if(mSecondPic)

            {

                saveImage(mSecondJpgFileName,data);

            }

            else

            {

           

                saveImage(mJpgFileName,data);

            }

           

            mCamera.setPreviewCallback(previewCallback);

            mCamera.startPreview();

           

            if(!mSecondPic)

            {

                mSecondPic=!mSecondPic;

            // 發送消息拍第二張照片

                myHander.sendEmptyMessage(takeMySecondPic);

            }

        }

    };

       

    //菜單按鈕  手機上的菜單鍵纔會有顯示可以不看着一段    

    //老版本的如果你sdk還沒有下面的onCreateOptionMenu onOptionsItemSelected就不要寫

 

   @Override

   publicbooleanonCreateOptionsMenu(Menu menu) {

       // getMenuInflater().inflate(R.menu.activity_my_test_cam, menu);

     

        super.onPrepareOptionsMenu(menu);

       menu.clear();

         MenuInflaterinflater=getMenuInflater();

         inflater.inflate(R.menu.activity_my_test_cam,menu);

        MenuItem item1= menu.add(1,1,1,"Item1");

        //使菜單項帶圖片

        //res/drawable-hdpi下面要有 a1這張圖片

        item1.setIcon(R.drawable.a1);

        MenuItem item2= menu.add(1,2,2,"Item2");

        item2.setIcon(R.drawable.a3);

        menu.add(3,3,3,"Item3");

        menu.add(1,5,5,"Item5");

        menu.add(2,6,6,"Item6");

        returntrue;

   }

   //菜單按鈕相應

  publicbooleanonOptionsItemSelected(MenuItem item){

   

    int item_id=item.getItemId();

    LOG(""+item_id);

    switch(item_id) {

    case 1:

            break;

        case 3:

            break;

        case 6:

       

        break;

 

        default:

            break;

        }

    returntrue;

   }

   

 

 

    @Override

    publicvoidsurfaceChanged(SurfaceHolder holder,int format,int width,

            int height)

    {

        //TODO Auto-generated method stub

    }

 

    @Override

    publicvoidsurfaceCreated(SurfaceHolder holder)

    {

        //TODO Auto-generated method stub

        initCamera();

       

    }

    @Override

    publicvoidsurfaceDestroyed(SurfaceHolder holder)

    {

        //TODO Auto-generated method stub

        if (mCamera !=null)

        {

            if (isPreview)

            {

                mCamera.setPreviewCallback(null);

                mCamera.stopPreview();

            }

            isPreview =false;

            mCamera.release();

            mCamera =null;

        }

       

    }

    PreviewCallback  previewCallback=newPreviewCallback() {

       

        @Override

        publicvoid onPreviewFrame(byte[] data, Camera camera)

        {

            //preview的回調數據在這裏處理

         //例如保存圖片到SDcard

           

        }

    };

    protectedvoid initCamera()

    {

        //TODO Auto-generated method stub

        if (mCamera ==null && !isPreview)

        {

            //打開照相機

            mCamera = Camera.open();

        }

        if (mCamera !=null && !isPreview)

        {

            try

            {

                parmeters =mCamera.getParameters();           

               

                List<Camera.Size>picSize=parmeters.getSupportedPictureSizes();

                int picNum =picSize.size();

                Camera.Sizecs=picSize.get(0);

                Camera.Sizepics=picSize.get(0);

               

                LOG("PictureSizes_0 ",pics.width+" "+pics.height+" a= "+picNum);

             

                pics=picSize.get(1);

                LOG("PictureSizes_1 ",pics.width+" "+pics.height);

               

                pics=picSize.get(2);

                LOG("PictureSizes_2 ",pics.width+" "+pics.height);

            

                pics=picSize.get(3);

                LOG("PictureSizes_3 ",pics.width+" "+pics.height);

                pics=picSize.get(4);

                LOG("PictureSizes_4 ",pics.width+" "+pics.height);

                pics=picSize.get(5);

                LOG("PictureSizes_5 ",pics.width+" "+pics.height);

                parmeters.setPreviewSize(cs.width, cs.height);

                parmeters.setPictureFormat(PixelFormat.JPEG);

               

                parmeters.setPictureSize(800,600);

                mCamera.setParameters(parmeters);

                mCamera.setPreviewDisplay(surfaceHolder);

                //注意這裏是 preview回調

                mCamera.setPreviewCallback(previewCallback);

                mCamera.startPreview();

                isPreview =true;

            }catch(IOException e)

            {

                //TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

    }

 

    publicboolean createWorkDir(StringdirName)

    {

        if (dirName ==null ||dirName.toLowerCase().compareTo("null") == 0)

            returnfalse;

        FilepFile = newFile(dirName);

        if (!pFile.exists())

        {

            try

            {

                boolean rev = pFile.mkdirs();

                if (rev)

                    returntrue;

                else

                    returnfalse;

            }catch(Exception e)

            {

                e.printStackTrace();

                returnfalse;

            }

        }

        returntrue;

    }

   

    protectedboolean saveImage(StringmJpgFileName2,byte[]data)

    {

        boolean success=false;

       

       

        if (mJpgFileName2 !=null)

        {

            Filefile=newFile(mJpgFileName2);

            try

            {

                FileOutputStreamstream =newFileOutputStream(file);

                stream.write(data);

                stream.close();

                success=true;

 

            }catch(FileNotFoundException e)

            {

                //TODO Auto-generated catch block

                e.printStackTrace();

            }catch(IOException e)

            {

                e.printStackTrace();

               

            }

            finally

            {

                return success;

            }

        }

        else

            return success;

    }

 

   

    //最好將函數封裝  方便以後調試

    publicvoid LOG(String string)

    {

       

        Log.e("MyTestCam",string);

    }

    //   函數重載

    publicvoid LOG(Stringstring,String str1)

    {

       

        Log.e(string,str1);

    }

   

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下面是顯示圖片的類

 

如下功能  觸屏 圖像對比 以及一些圖像縮放方面的知識。

package com.example.mytestcam;

 

import java.io.File;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

 

 

import android.app.Activity;

import android.content.Intent;

import android.content.pm.ActivityInfo;

import android.database.Cursor;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Matrix;

import android.graphics.PixelFormat;

importandroid.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.view.Window;

import android.view.WindowManager;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.RelativeLayout;

import android.widget.Toast;

 

public class MyIntentView extends Activity

{

        

// 這是屏幕的寬度

         intx = 400, y;

         booleanfirstPic = true;

         String[]name = null;

         ImageViewimaOne, imaTwo;

         RelativeLayoutrelativeLayout;

         MyDrawLineViewmyView;

         Bitmapbm1, bm2;

         Test_SQLdb;

 

         publicvoid onCreate(Bundle savedInstanceState)

         {

                   super.onCreate(savedInstanceState);

 

                   //去掉屏蔽的標題

                   getWindow().setFormat(PixelFormat.TRANSLUCENT);

                   requestWindowFeature(Window.FEATURE_NO_TITLE);

                   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

                                     WindowManager.LayoutParams.FLAG_FULLSCREEN);

             //設置屏幕的橫豎屏

                   setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

                   setContentView(R.layout.myview);

 

                   LOG("myview");

                   Intentintent = getIntent();

                   LOG("Intentintent = getIntent();");

 

                   Bundlebunde = intent.getExtras();

                   LOG("Bundlebunde = intent.getExtras(); ");

                   name= bunde.getStringArray("strr");

                   db=newTest_SQL(this);

        

                   imaOne= (ImageView) findViewById(R.id.first_view);

                   imaTwo= (ImageView) findViewById(R.id.sec_view);

                   myView= new MyDrawLineView(MyIntentView.this);

                   relativeLayout= (RelativeLayout) findViewById(R.id.relativeLayout1);

                   relativeLayout.addView(myView);

                   //

 

                   LOG("Stringname = bunde.getString");

                   LOG("Stringname = bunde.getString" + name.toString());

                   if(name[0].equals("noPic"))

                   {

                            db.open();

                            Cursorc=db.getLastPicName();

                            name[0]=c.getString(1);

                            name[1]=c.getString(2);

                            db.close();

                            LOG(name[0]);

                            LOG(name[1]);

                   }else

                   {

                            db.open();

                            Cursorc=db.getLastPicName();

                            if(name[0].equals(c.getString(1)));

                            else

                                     db.insertPicName(name[0],name[1]);

                            db.close();

                            LOG("getLastPicName", name[0]);

                            LOG("getLastPicName",name[1]);

 

                   }

                   loadPic(name[0]);

                   loadPic(name[1]);

 

                  

         }

 

         @Override

         publicboolean onTouchEvent(MotionEvent event)

         {

                   //TODO Auto-generated method stub

//               LOG("onTouch ");

                   x= (int) event.getX();

                   y= (int) event.getY();

 

                   if(event.getAction() == MotionEvent.ACTION_DOWN)

                   {

                            LOG("MotionEvent.ACTION_DOWN" + " x= " + x);

                            myView.drawLine(x,600);

                            myView.invalidate();

//       我的屏幕顯示後照片的大小寬度是800當手在這範圍裏就從畫圖片 超過者範圍就直接是完整的圖片

                            if(x > 800)

                            {

                                     x= 800;

                            }

                            Bitmap bitmap =Bitmap.createBitmap(bm1, 0, 0, x, 600);

                            imaOne.setImageBitmap(bitmap);

                            imaOne.bringToFront();

//                         bitmap.recycle();

                   }else if (event.getAction() == MotionEvent.ACTION_MOVE)

                   {

                            //LOG("MotionEvent.ACTION_DOWN" + " x= " + x);

                            myView.drawLine(x, 600);

                            myView.invalidate();

 

                            if(x > 800)

                            {

                                     x= 800;

                            }

                            Bitmapbitmap = Bitmap.createBitmap(bm1, 0, 0, x, 600);

                            imaOne.setImageBitmap(bitmap);

                            imaOne.bringToFront();

//                         bitmap.recycle();

 

                   }

                   super.onTouchEvent(event);

                   returnfalse;

         }

 

         publicvoid loadPic(String str)

         {

                   Filefile;

                   file= new File(str);

                   try

                   {

                            if(file.exists())

                            {

                                     //Bitmap bm ;

                                     //這段是可以改變圖片大小

                                     //float newWidth=400, newHeight=300;

                                     //float scaleWidth = (float)newWidth / bm.getWidth();

                                     //float scaleHeight = (float)newHeight / bm.getHeight();

                                     //Matrix m = new Matrix();

                                     //m.postScale(scaleWidth, scaleHeight);

                                     //Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0,

                                     //bm.getWidth(), bm.getHeight(), m, true);

                                     //Bitmap newBitmap=Bitmap.createScaledBitmap(bm, 400, 300,

                                     //true);

 

                                     if(firstPic)

                                     {

                                               firstPic= !firstPic;

                                               bm1= BitmapFactory.decodeFile(str);

                                               imaOne.setScaleType(ImageView.ScaleType.FIT_START);

                                               //Bitmap bitmap = Bitmap.createBitmap(bm1, 0, 0, x, 600);

                                               Bitmapbitmap = Bitmap.createBitmap(bm1, 0, 0, x, 600);

                                               imaOne.setImageBitmap(bitmap);

                                     //      bitmap.recycle();

                                              

                                                

                                               //Bitmap newBitmap=Bitmap.createScaledBitmap(bm, 400, 300,

                                               //true);

                                               imaOne.bringToFront();

//                                                 bitmap.recycle();

                                               //imaOnesetVisible(View.INVISIBLE);

                                               //imaOne.setVisibility(View.INVISIBLE);

 

                                     }else

                                     {

                                               bm2= BitmapFactory.decodeFile(str);

                                               imaTwo.setScaleType(ImageView.ScaleType.FIT_START);

                                               Bitmapbitmap = Bitmap.createBitmap(bm2, 0, 0, 800, 600);

                                               imaTwo.setImageBitmap(bitmap);

                                     }

 

                            }

                   }catch (Exception e)

                   {

                            System.out.println("filenot exist!");

                   }

 

         }

 

         publicvoid LOG(String string)

         {

                   Log.e("MyTestCam",string);

         }

         publicvoid LOG(String string ,String str)

         {

                   Log.e(string,str);

         }

}

 

 

 

 

畫圖爲相機加邊框

 

package com.example.mytestcam;

 

 

 import java.util.Arrays;

 

import android.annotation.SuppressLint;

import android.content.Context; 

 import android.graphics.Canvas; 

 import android.graphics.Paint; 

import android.graphics.Rect;

import android.graphics.Paint.Style;

import android.graphics.RectF;

import android.util.Log;

import android.view.View;

import android.widget.TextView; 

 public class MyRectView extends View  { 

   

         private  int arry[]=new int[31] ;

        

          public MyRectView(Context context) { 

        super(context);

        Arrays.fill(arry, 0);

        

    } 

            public void drawrect(int a[])

             {

                      arry=a;

             }

    @SuppressLint("DrawAllocation")

         publicvoid update(){postInvalidate();}

        

   protected void onDraw(Canvas canvas) 

   { 

              

       super.onDraw(canvas); 

       Paint paint = new Paint(); 

       paint.setColor(android.graphics.Color.RED);

       paint.setStrokeWidth(5.0f);

       //空心矩形

       paint.setStyle(Style.STROKE);

       // 繪製一個矩形

 

       canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);

 

   } 

 

    

 }  

 

 

 

 

畫線類線隨着手指移動

 

 

package com.example.mytestcam;

 

 

 import java.util.Arrays;

 

import android.annotation.SuppressLint;

import android.content.Context; 

 import android.graphics.Canvas; 

 import android.graphics.Paint; 

import android.graphics.Rect;

import android.graphics.Paint.Style;

import android.graphics.RectF;

import android.util.Log;

import android.view.View;

import android.widget.TextView; 

 public class MyDrawLineView extends View  { 

  //x方向與y方向 我圖像寬爲800 畫一豎線到圖片中間       myintentView  控制圖像對比

          int x=0,y=600;

        

          public MyDrawLineView(Context context) { 

        super(context);

        

    } 

            public void drawLine(int a,int b)

             {

                      x=a;

                      y=b;

             }

    @SuppressLint("DrawAllocation")

         publicvoid update(){postInvalidate();}

        

   protected void onDraw(Canvas canvas) 

   { 

              

       super.onDraw(canvas); 

       Paint paint = new Paint(); 

       paint.setColor(android.graphics.Color.RED);

       paint.setStrokeWidth(5.0f);

      //空心矩形

      // paint.setStyle(Style.STROKE);

      // 繪製一個矩形

       if(x==0)

       {

                x=400;

       }

       canvas.drawLine(x,0, x, y, paint);

   } 

 }  

 

 

 

 

 

 

 

 

 

下面是數據庫封裝的類

 

 

 

 

package com.example.mytestcam;

 

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

 

public class Test_SQL // extendsSQLiteOpenHelper

{

         publicstatic final String TAG="Test_SQL";

         publicstatic final String KEY_ROWID = "_id";

         publicstatic final String KEY_PicSource1 = "picSource1";

         publicstatic final String KEY_PicSource2 = "picSource2";

         privatestatic final String DATABASE_NAME = "picName.db";

         privatestatic final int DATABASE_VERSION = 1;

         privatestatic final String DATABASE_TABLE = "pic";

         privatestatic final String DATABASE_CREATE = "create table pic (_id integerprimary key ,picSource1 text not null,picSource2 text not null);";

         //privatestatic final String DATABASE_CREATE = "create table titles (_id integerprimary key autoincrement,isbn text not null,title text not null,publisher textnot null);";

 

         privateSQLiteDatabase db;

         privateContext mContext;

         DBHelperdbHelper;

         publicTest_SQL(Context context)

         {

                   this.mContext=context;

                   dbHelper=newDBHelper(context);

                  

         }

         publicTest_SQL open()

         {

                   db=dbHelper.getWritableDatabase();

                   returnthis;

                  

         }

         publicvoid close()

         {

                   db.close();

         }

         publiclong insertPicName(String picSource , String picSource0)

         {

                   ContentValuesvalue= new ContentValues();

                   value.put(KEY_PicSource1,picSource);

                   value.put(KEY_PicSource2,picSource0);

                  

                   returndb.insert(DATABASE_TABLE, null, value);

         }

        

         publicboolean deletePicName(long rowId)

         {

                   returndb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;

         }

         publicCursor getAllPicName()

         {

                   returndb.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_PicSource1,KEY_PicSource2 }, null, null, null, null, null);

         }

         publicCursor getPicName(long rowId) throws SQLException

         {

                   CursormCursor = db.query(true, DATABASE_TABLE, new String[] {

                                     KEY_ROWID,KEY_PicSource1 ,KEY_PicSource2}, KEY_ROWID

                                     +"=" + rowId, null, null, null, null, null);

                   if(mCursor != null)

                   {

                            mCursor.moveToFirst();

                   }

                   returnmCursor;

         }

         publicCursor getLastPicName() throws SQLException

         {

                   intid=0;

                   CursormCursor=db.query(DATABASE_TABLE, null, null, null, null, null, "_idDESC");

                   if(mCursor.moveToNext())

                   {

                              id =mCursor.getInt(mCursor.getColumnIndex("_id"));

                      // 這個id就是最大值

                              Log.e("ID", " msg=  "+id);

                   }

                  

                  

                   mCursor=db.query(DATABASE_TABLE,  new String[] {KEY_ROWID, KEY_PicSource1 ,KEY_PicSource2}, KEY_ROWID+"="+id,null,null, null, null, null);

 

//         mCursor = db.query(true, DATABASE_TABLE, newString[] {

//                                  KEY_ROWID,KEY_PicSource1 ,KEY_PicSource2}, KEY_ROWID

//                                  +"=" + "MAX(rowId)", null, null, null, null, null);

                   if(mCursor != null)

                   {

                            mCursor.moveToFirst();

                   }

                   returnmCursor;

         }

 

         publicboolean updatePicName(long rowId, String picSource1,String picSource2)

         {

                   ContentValuesvalue= new ContentValues();

                   value.put(KEY_PicSource1,picSource1);

                   value.put(KEY_PicSource2,picSource2);

        

                   returndb.update(DATABASE_TABLE, value, KEY_ROWID + "=" + rowId, null) >0;

         }

        

        

        

        

        

        

        

        

        

        

        

         publicstatic class DBHelper extends SQLiteOpenHelper

         {

 

                   publicDBHelper(Context context) {

                            super(context,DATABASE_NAME, null, DATABASE_VERSION);

                            //TODO Auto-generated constructor stub

                   }

 

                   @Override

                   publicvoid onCreate(SQLiteDatabase db)

                   {

                           

                            //TODO Auto-generated method stub

                            db.execSQL(DATABASE_CREATE);

                           

                   }

 

                   @Override

                   publicvoid onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

                   {

                            //TODO Auto-generated method stub

                            Log.e(TAG,"Upgrading database from version " + oldVersion + " to "

                                               +newVersion + ", which will destroy all old data");

                            db.execSQL("DROPTABLE IF EXISTS titles");

                            onCreate(db);

                           

                   }

                  

         }

        

 

}

 

 

下面是佈局

activity_my_test_cam.xml

 

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:id="@+id/relativeLayout"

   

     >

 

 

<SurfaceView

 

         android:id="@+id/surface_view"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

   

    />

    <Button

        android:id="@+id/takPic"

        android:layout_width="50dip"

        android:layout_height="90dip"

        android:layout_alignParentRight="true"

        android:layout_centerVertical="true"

        android:background="@drawable/btn_press"

        android:text="bton"/>  

       <Button

        android:id="@+id/showPic"

        android:layout_width="50dip"

        android:layout_height="90dip"

        android:layout_alignParentLeft="true"

        android:layout_centerVertical="true"

        android:background="@drawable/btn_press"

        android:text="bton2"/>  

 

 

</RelativeLayout>

 

 

 

MyIntentView的佈局

myview.xml

 

 

 

 

<?xmlversion="1.0"encoding="UTF-8"?>

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:id="@+id/relativeLayout1"

 

    >

 

 

 

        <ImageView

           android:id="@+id/first_view"

           android:layout_width="fill_parent"

           android:layout_height="fill_parent"

            android:layout_alignParentLeft="true"

        />

 

 

 

        <ImageView

           android:id="@+id/sec_view"

           android:layout_width="fill_parent"

           android:layout_height="fill_parent"

           android:layout_alignLeft="@+id/relativeLayout1"

           android:layout_alignParentLeft="true"

        />

 

 

</RelativeLayout>

 

 

 

 

 

Menu

activity_my_test_cam.xml

 

<menuxmlns:android="http://schemas.android.com/apk/res/android">

   <itemandroid:id="@+id/menu_settings"

        android:title="@string/menu_settings"

        android:orderInCategory="100"

        android:showAsAction="never"/>

</menu>

 

 

 

 

 

 

 

 

 

 

AndroidManifest.xml

 

 

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example.mytestcam"

    android:versionCode="1"

    android:versionName="1.0">

 

   <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="15"/>

 

   <uses-permissionandroid:name="android.permission.CAMERA"/>

   <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>

    <uses-featureandroid:name="android.hardware.camera"/>

    <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

   <uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>

   <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@android:style/Theme.NoTitleBar"

        android:screenOrientation="landscape"

       

        >

       

        <activity

           android:name=".MyTestCam"

            android:screenOrientation="landscape"

           android:label="@string/title_activity_my_test_cam">

            <intent-filter>

                <actionandroid:name="android.intent.action.MAIN"/>

 

                <categoryandroid:name="android.intent.category.LAUNCHER"/>

            </intent-filter>

        </activity>

                <activity

           android:name=".MyIntentView"

            android:screenOrientation="landscape"

           android:label="MyIntentView"

           android:theme="@android:style/Theme.NoTitleBar">

        </activity>

        <activity

           android:name=".Origintation"

           android:label="Origintation"

           android:screenOrientation="landscape"

           android:theme="@android:style/Theme.NoTitleBar">

        </activity>

               

   </application>

 

</manifest>

 

 

 

OK;裏面的一些變化根據自己情況調整 ,注意看用法。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章