Board logo

標題: MyCamera [打印本頁]

作者: ray    時間: 2012-11-30 19:09     標題: MyCamera

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent" >
  5.         <Button
  6.             android:id="@+id/Button01"
  7.         android:layout_width="match_parent"
  8.         android:layout_height="wrap_content"
  9.         android:text="@string/camera_lbl"
  10.          />
  11.     <ListView
  12.         android:id="@+id/ListView01"
  13.         android:layout_width="match_parent"
  14.         android:layout_height="wrap_content"
  15.          />

  16. </LinearLayout>
複製代碼

作者: ray    時間: 2012-11-30 19:12

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

  2.     <uses-feature android:name="android.hardware.camera" />
  3.     <uses-feature android:name="android.hardware.camera.autofocus" />
  4.     <uses-feature android:name="android.hardware.camera.flash" />

  5.     <uses-permission android:name="android.permission.INTERNET" />
  6.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
複製代碼

作者: ray    時間: 2012-11-30 19:21

  1. private Button takePicBtn;
  2.         private ListView myListView;
  3.         private ArrayAdapter<String> adapter;
  4.         private ArrayList<String> picFiles;
  5.         private boolean sdCardExist;
複製代碼

作者: ray    時間: 2012-11-30 19:27

  1.         takePicBtn = (Button)findViewById(R.id.Button01);
  2.         myListView = (ListView)findViewById(R.id.ListView01);
  3.         
  4.         sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
複製代碼

作者: ray    時間: 2012-11-30 19:32

  1. getPicFiles();
  2.         adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,picFiles);
  3.         myListView.setAdapter(adapter);
複製代碼

作者: ray    時間: 2012-11-30 19:38

  1. private void getPicFiles()
  2.     {
  3.             picFiles = new ArrayList<String>();
  4.             if(sdCardExist)
  5.             {
  6.                    
  7.             }
  8.     }
複製代碼

作者: ray    時間: 2012-11-30 19:45

  1. if(sdCardExist)
  2.             {
  3.                     File myDir = Environment.getExternalStorageDirectory();
  4.                     File[] files = myDir.listFiles();
  5.                     if(files != null)
  6.                     {
  7.                             for(int i = 0 ; i < files.length;i++)
  8.                             {
  9.                                     if(files[i].isFile() && files[i].getName().substring(files[i].getName().indexOf(".")).toLowerCase().equals(".jpg"))
  10.                                     {
  11.                                            
  12.                                     }
  13.                             }
  14.                     }
  15.             }
複製代碼

作者: ray    時間: 2012-11-30 19:52

  1. takePicBtn.setOnClickListener(new OnClickListener()
  2.         {

  3.                         public void onClick(View v) {
  4.                                 // TODO Auto-generated method stub
  5.                                
  6.                         }
  7.                
  8.         });
複製代碼

作者: ray    時間: 2012-11-30 19:58

  1. if(v == takePicBtn)
  2.                                 {
  3.                                         Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  4.                                        
  5.                                 }
複製代碼

作者: ray    時間: 2012-11-30 20:07

  1. try
  2.                                         {
  3.                                                 Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  4.                                                 File myDir = Environment.getExternalStorageDirectory();
  5.                                                 File myFile = File.createTempFile("MyCamera_", ".jpg", myDir);
  6.                                                 Uri outputFile = Uri.fromFile(myFile);
  7.                                                 intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFile);
  8.                                                 startActivity(intent);
  9.                                         }
  10.                                         catch(Exception e)
  11.                                         {}
複製代碼

作者: ray    時間: 2012-11-30 20:14

  1. package com.example.mycamera;

  2. import java.io.File;
  3. import java.util.ArrayList;

  4. import android.net.Uri;
  5. import android.os.Bundle;
  6. import android.os.Environment;
  7. import android.provider.MediaStore;
  8. import android.app.Activity;
  9. import android.content.Intent;
  10. import android.view.Menu;
  11. import android.view.View;
  12. import android.view.View.OnClickListener;
  13. import android.widget.ArrayAdapter;
  14. import android.widget.Button;
  15. import android.widget.ListView;

  16. public class MainActivity extends Activity
  17. {
  18.         private Button takePicBtn;
  19.         private ListView myListView;
  20.         private ArrayAdapter<String> adapter;
  21.         private ArrayList<String> picFiles;
  22.         private boolean sdCardExist;
  23.        
  24.     @Override
  25.     public void onCreate(Bundle savedInstanceState)
  26.     {
  27.         super.onCreate(savedInstanceState);
  28.         setContentView(R.layout.activity_main);
  29.         
  30.         takePicBtn = (Button)findViewById(R.id.Button01);
  31.         myListView = (ListView)findViewById(R.id.ListView01);
  32.         
  33.         sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
  34.         getPicFiles();
  35.         adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,picFiles);
  36.         myListView.setAdapter(adapter);
  37.         
  38.         takePicBtn.setOnClickListener(new OnClickListener()
  39.         {
  40.                         public void onClick(View v)
  41.                         {
  42.                                 // TODO Auto-generated method stub
  43.                                 if(v == takePicBtn)
  44.                                 {
  45.                                         try
  46.                                         {
  47.                                                 Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  48.                                                 File myDir = Environment.getExternalStorageDirectory();
  49.                                                 File myFile = File.createTempFile("MyCamera_", ".jpg", myDir);
  50.                                                 Uri outputFile = Uri.fromFile(myFile);
  51.                                                 intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFile);
  52.                                                 startActivity(intent);
  53.                                         }
  54.                                         catch(Exception e)
  55.                                         {}
  56.                                 }
  57.                         }
  58.                
  59.         });
  60.     }

  61.     @Override
  62.     public boolean onCreateOptionsMenu(Menu menu) {
  63.         getMenuInflater().inflate(R.menu.activity_main, menu);
  64.         return true;
  65.     }
  66.    
  67.     private void getPicFiles()
  68.     {
  69.             picFiles = new ArrayList<String>();
  70.             if(sdCardExist)
  71.             {
  72.                     File myDir = Environment.getExternalStorageDirectory();
  73.                     File[] files = myDir.listFiles();
  74.                     if(files != null)
  75.                     {
  76.                             for(int i = 0 ; i < files.length;i++)
  77.                             {
  78.                                     if(files[i].isFile() && files[i].getName().substring(files[i].getName().indexOf(".")).toLowerCase().equals(".jpg"))
  79.                                     {
  80.                                             picFiles.add(files[i].getName());
  81.                                     }
  82.                             }
  83.                     }
  84.             }
  85.     }
  86. }
複製代碼

作者: ray    時間: 2012-11-30 20:41

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     android:orientation="vertical"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent" >
  5.         <Button
  6.             android:id="@+id/Button01"
  7.         android:layout_width="match_parent"
  8.         android:layout_height="wrap_content"
  9.         android:text="@string/camera_lbl"
  10.          />
  11.     <ListView
  12.         android:id="@+id/ListView01"
  13.         android:layout_width="match_parent"
  14.         android:layout_height="wrap_content"
  15.          />

  16. </LinearLayout>
複製代碼

作者: ray    時間: 2012-11-30 20:49

  1. package com.example.mycamera;

  2. import java.io.File;
  3. import java.util.ArrayList;

  4. import android.net.Uri;
  5. import android.os.Bundle;
  6. import android.os.Environment;
  7. import android.provider.MediaStore;
  8. import android.app.Activity;
  9. import android.content.Intent;
  10. import android.view.Menu;
  11. import android.view.View;
  12. import android.view.View.OnClickListener;
  13. import android.widget.ArrayAdapter;
  14. import android.widget.Button;
  15. import android.widget.ListView;

  16. public class MainActivity extends Activity
  17. {
  18.         private Button takePicBtn;
  19.         private ListView myListView;
  20.         private ArrayAdapter<String> adapter;
  21.         private ArrayList<String> picFiles;
  22.         private boolean sdCardExist;
  23.        
  24.     @Override
  25.     public void onCreate(Bundle savedInstanceState)
  26.     {
  27.         super.onCreate(savedInstanceState);
  28.         setContentView(R.layout.activity_main);
  29.         
  30.         takePicBtn = (Button)findViewById(R.id.Button01);
  31.         myListView = (ListView)findViewById(R.id.ListView01);
  32.         
  33.         sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
  34.         getPicFiles();
  35.         adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,picFiles);
  36.         myListView.setAdapter(adapter);
  37.         
  38.         takePicBtn.setOnClickListener(new OnClickListener()
  39.         {
  40.                         public void onClick(View v)
  41.                         {
  42.                                 // TODO Auto-generated method stub
  43.                                 if(v == takePicBtn)
  44.                                 {
  45.                                         try
  46.                                         {
  47.                                                 Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  48.                                                 File myDir = Environment.getExternalStorageDirectory();
  49.                                                 File myFile = File.createTempFile("MyCamera_", ".jpg", myDir);
  50.                                                 Uri outputFile = Uri.fromFile(myFile);
  51.                                                 intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFile);
  52.                                                 startActivity(intent);
  53.                                         }
  54.                                         catch(Exception e)
  55.                                         {}
  56.                                 }
  57.                         }
  58.                
  59.         });
  60.     }

  61.     @Override
  62.     public boolean onCreateOptionsMenu(Menu menu) {
  63.         getMenuInflater().inflate(R.menu.activity_main, menu);
  64.         return true;
  65.     }
  66.    
  67.     @Override
  68.     protected void onResume()
  69.     {
  70.              super.onResume();
  71.                  sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
  72.                  getPicFiles();
  73.                  adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,picFiles);
  74.                  myListView.setAdapter(adapter);
  75.     }
  76.    
  77.     private void getPicFiles()
  78.     {
  79.             picFiles = new ArrayList<String>();
  80.             if(sdCardExist)
  81.             {
  82.                     File myDir = Environment.getExternalStorageDirectory();
  83.                     File[] files = myDir.listFiles();
  84.                     if(files != null)
  85.                     {
  86.                             for(int i = 0 ; i < files.length;i++)
  87.                             {
  88.                                     if(files[i].isFile() && files[i].getName().substring(files[i].getName().indexOf(".")).toLowerCase().equals(".jpg"))
  89.                                     {
  90.                                             picFiles.add(files[i].getName());
  91.                                     }
  92.                             }
  93.                     }
  94.             }
  95.     }
  96. }
複製代碼

作者: ray    時間: 2012-11-30 20:58

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="fill_parent"
  5.     android:orientation="vertical">
  6.         <Button android:id="@+id/ImageButton01"
  7.                 android:layout_width="wrap_content"
  8.                 android:layout_height="wrap_content"
  9.                 android:layout_gravity="center"
  10.                 android:text="@string/camera_lbl">
  11.         </Button>
  12.         <SurfaceView android:id="@+id/SurfaceView01"
  13.                 android:layout_width="wrap_content"
  14.                 android:layout_height="wrap_content">
  15.         </SurfaceView>
  16. </LinearLayout>
複製代碼

作者: ray    時間: 2012-11-30 20:59

  1. package com.example.mycamera;

  2. import java.io.File;
  3. import java.io.FileOutputStream;

  4. import android.app.Activity;
  5. import android.content.Intent;
  6. import android.hardware.Camera;
  7. import android.os.Bundle;
  8. import android.os.Environment;
  9. import android.util.Log;
  10. import android.view.SurfaceHolder;
  11. import android.view.SurfaceView;
  12. import android.view.View;
  13. import android.widget.Button;

  14. public class CameraActivity extends Activity
  15. {
  16.           private static final String TAG = "MyCamera";  
  17.           final int latchedOrientation = 90;   
  18.           private Camera mCamera;
  19.           private String picFileName;
  20.           private boolean sdCardExist;  //SD Card是否存在
  21.           private String strTempFile = "MyCamera_";  //前置檔名
  22.           
  23.           // Create surface for preview
  24.           private SurfaceHolder.Callback mSurfaceListener =  
  25.             new SurfaceHolder.Callback()
  26.             {  
  27.                     // Surface create
  28.                     public void surfaceCreated(SurfaceHolder holder)
  29.                     {  
  30.                       mCamera = Camera.open();
  31.                       try
  32.                       {
  33.                         mCamera.setPreviewDisplay(holder);
  34.                       }  
  35.                       catch (Exception e)
  36.                       {  
  37.                         e.printStackTrace();  
  38.                       }
  39.                     }  
  40.                     // Surface destroy
  41.                     public void surfaceDestroyed(SurfaceHolder holder)
  42.                     {
  43.                             mCamera.release();  
  44.                             mCamera = null;  
  45.                     }  
  46.                     // Surface change
  47.                     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
  48.                     {  
  49.                             Camera.Parameters parameters = mCamera.getParameters();  
  50.                             parameters.set("jpeg-quality", 85);
  51.                             mCamera.setParameters(parameters);  
  52.                             mCamera.startPreview();  
  53.                            
  54.                     }  
  55.             };
  56.                         
  57.           // Auto focus to take a photo
  58.           private Camera.AutoFocusCallback mAutoFocusListener =  
  59.             new Camera.AutoFocusCallback()
  60.             {   
  61.             public void onAutoFocus(boolean success, final Camera camera)
  62.             {  
  63.              
  64.               Log.i(TAG,"AutoFocus : " + success);              
  65.              
  66.               camera.autoFocus(null);
  67.               camera.takePicture(mShutterListener, null, mPictureListener);  
  68.               new Thread()
  69.               {
  70.                       @Override
  71.                                 public void run()
  72.                             {
  73.                                         try
  74.                                         {
  75.                                                 Thread.sleep(3000);       
  76.                                         }
  77.                                         catch (InterruptedException e)
  78.                                         {
  79.                                                 e.printStackTrace();
  80.                                         }
  81.                                         camera.startPreview();
  82.                                         Intent intent = new Intent ();
  83.                             intent.putExtra ("PIC_FILENAME", picFileName);
  84.                             setResult (-1, intent);
  85.                             finish ();
  86.                             }
  87.               }.start();
  88.                
  89.             }  
  90.           };  
  91.           // Listener for Shut process
  92.           private Camera.ShutterCallback mShutterListener =   
  93.             new Camera.ShutterCallback() {  
  94.             public void onShutter() {
  95.               Log.i(TAG, "onShutter");  
  96.             }  
  97.           };  
  98.           // Listener for Picture process  
  99.           private Camera.PictureCallback mPictureListener =   
  100.             new Camera.PictureCallback() {     
  101.             public void onPictureTaken(byte[] data, Camera camera) {  
  102.               Log.i(TAG, "Picture taken");
  103.           
  104.               FileOutputStream fos = null;
  105.                         try
  106.                         {
  107.                                 /* 判斷SD Card是否插入 */
  108.                             sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
  109.                             /* 取得SD Card路徑做為錄音的檔案位置 */
  110.                             if (sdCardExist)
  111.                             {
  112.                                File myDir = Environment.getExternalStorageDirectory();
  113.                                File myFile = File.createTempFile(strTempFile, ".jpg",myDir);
  114.                                picFileName = myFile.getName();
  115.                                String myFileName = myFile.getPath();
  116.                                fos = new FileOutputStream(myFileName);
  117.                                fos.write(data);
  118.                                fos.close();

  119.                                                   }
  120.                         }
  121.                         catch (Exception e)
  122.                         {
  123.                                 e.printStackTrace();
  124.                         }
  125.             }
  126.             
  127.           };  
  128.           // Press Camera photo button
  129.           private View.OnClickListener mButtonListener =   new View.OnClickListener()
  130.           {     
  131.             public void onClick(View v)
  132.             {  
  133.               if(mCamera != null)
  134.               {
  135.                 mCamera.autoFocus(mAutoFocusListener);  
  136.               }  
  137.             }  
  138.           };   
  139.         // Called when the activity is first created.
  140.     @Override
  141.     public void onCreate(Bundle savedInstanceState)
  142.     {
  143.         super.onCreate(savedInstanceState);
  144.       
  145.         setContentView(R.layout.activity_camera);  
  146.         // Camera preview
  147.         SurfaceView surface = (SurfaceView)findViewById(R.id.SurfaceView01);  
  148.         SurfaceHolder holder = surface.getHolder();  
  149.         holder.addCallback(mSurfaceListener);  
  150.         holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  
  151.         // Camera photo button
  152.         Button button = (Button)findViewById(R.id.ImageButton01);  
  153.         button.setOnClickListener(mButtonListener);  
  154.     }
  155. }
複製代碼

作者: ray    時間: 2012-11-30 21:11

  1. package com.example.mycamera;

  2. import java.io.File;
  3. import java.util.ArrayList;

  4. import android.net.Uri;
  5. import android.os.Bundle;
  6. import android.os.Environment;
  7. import android.provider.MediaStore;
  8. import android.app.Activity;
  9. import android.content.Intent;
  10. import android.view.Menu;
  11. import android.view.View;
  12. import android.view.View.OnClickListener;
  13. import android.widget.ArrayAdapter;
  14. import android.widget.Button;
  15. import android.widget.ListView;

  16. public class MainActivity extends Activity
  17. {
  18.         private Button takePicBtn;
  19.         private ListView myListView;
  20.         private ArrayAdapter<String> adapter;
  21.         private ArrayList<String> picFiles;
  22.         private boolean sdCardExist;
  23.        
  24.     @Override
  25.     public void onCreate(Bundle savedInstanceState)
  26.     {
  27.         super.onCreate(savedInstanceState);
  28.         setContentView(R.layout.activity_main);
  29.         
  30.         takePicBtn = (Button)findViewById(R.id.Button01);
  31.         myListView = (ListView)findViewById(R.id.ListView01);
  32.         
  33.         sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
  34.         getPicFiles();
  35.         adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,picFiles);
  36.         myListView.setAdapter(adapter);
  37.         
  38.         takePicBtn.setOnClickListener(new OnClickListener()
  39.         {
  40.                         public void onClick(View v)
  41.                         {
  42.                                 // TODO Auto-generated method stub
  43.                                 if(v == takePicBtn)
  44.                                 {
  45.                                         Intent intent = new Intent(MainActivity.this,CameraActivity.class);
  46.                                         startActivityForResult(intent,1);
  47.                                         /*
  48.                                         try
  49.                                         {
  50.                                                 Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  51.                                                 File myDir = Environment.getExternalStorageDirectory();
  52.                                                 File myFile = File.createTempFile("MyCamera_", ".jpg", myDir);
  53.                                                 Uri outputFile = Uri.fromFile(myFile);
  54.                                                 intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFile);
  55.                                                 startActivity(intent);
  56.                                         }
  57.                                         catch(Exception e)
  58.                                         {}
  59.                                         */
  60.                                 }
  61.                         }
  62.                
  63.         });
  64.     }

  65.     @Override
  66.     public boolean onCreateOptionsMenu(Menu menu) {
  67.         getMenuInflater().inflate(R.menu.activity_main, menu);
  68.         return true;
  69.     }
  70.     /*
  71.     @Override
  72.     protected void onResume()
  73.     {
  74.              super.onResume();
  75.                  sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
  76.                  getPicFiles();
  77.                  adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,picFiles);
  78.                  myListView.setAdapter(adapter);
  79.     }
  80.     */
  81.     @Override
  82.     protected void onActivityResult(int requestCode,int resultCode,Intent data)
  83.     {
  84.             super.onActivityResult(requestCode, resultCode, data);
  85.             if(requestCode == 1)
  86.             {
  87.                     if(resultCode == RESULT_OK)
  88.                     {
  89.                             String picName = data.getStringExtra("PIC_FILENAME");
  90.                             adapter.add(picName);
  91.                     }
  92.             }
  93.     }
  94.    
  95.     private void getPicFiles()
  96.     {
  97.             picFiles = new ArrayList<String>();
  98.             if(sdCardExist)
  99.             {
  100.                     File myDir = Environment.getExternalStorageDirectory();
  101.                     File[] files = myDir.listFiles();
  102.                     if(files != null)
  103.                     {
  104.                             for(int i = 0 ; i < files.length;i++)
  105.                             {
  106.                                     if(files[i].isFile() && files[i].getName().substring(files[i].getName().indexOf(".")).toLowerCase().equals(".jpg"))
  107.                                     {
  108.                                             picFiles.add(files[i].getName());
  109.                                     }
  110.                             }
  111.                     }
  112.             }
  113.     }
  114. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2