綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 無法使用當前時間作為存檔檔名 幫幫忙

[複製連結] 查看: 1215|回覆: 3|好評: 0
跳轉到指定樓層
樓主
a125511 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-7-8 17:32

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x

  1. package tw.android;

  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.sql.Date;
  6. import java.text.SimpleDateFormat;
  7. import java.util.Calendar;

  8. import android.app.Activity;
  9. import android.content.Intent;
  10. import android.content.res.Configuration;
  11. import android.graphics.PixelFormat;
  12. import android.hardware.Camera;
  13. import android.hardware.Camera.PictureCallback;
  14. import android.hardware.Camera.ShutterCallback;
  15. import android.net.Uri;
  16. import android.os.Bundle;

  17. import android.view.Menu;
  18. import android.view.MenuItem;
  19. import android.view.SurfaceHolder;
  20. import android.view.Window;
  21. import android.view.WindowManager;
  22. import android.widget.Toast;

  23. public class Main extends Activity {

  24.   private static final int MENU_TAKE_PICTURE = Menu.FIRST,
  25.                MENU_SHOW_PICTURE = Menu.FIRST + 1;

  26.   private Camera mCamera;
  27.   private CameraPreview mCamPreview;

  28.    
  29.   Thread readThread;

  30.   /** Called when the activity is first created. */
  31.     @Override
  32.     public void onCreate(Bundle savedInstanceState) {
  33.         super.onCreate(savedInstanceState);
  34.         
  35.         getWindow().setFormat(PixelFormat.TRANSLUCENT);
  36. //        requestWindowFeature(Window.FEATURE_NO_TITLE);
  37. //        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  38. //                   WindowManager.LayoutParams.FLAG_FULLSCREEN);

  39.         mCamPreview = new CameraPreview(this);
  40.         setContentView(mCamPreview);
  41.     }

  42.   @Override
  43.   protected void onResume() {
  44.     // TODO Auto-generated method stub

  45.     mCamera = Camera.open();
  46.     mCamPreview.set(this, mCamera);

  47.     super.onResume();
  48.   }

  49.   @Override
  50.   protected void onPause() {
  51.     // TODO Auto-generated method stub

  52.     mCamera.stopPreview();

  53.       mCamera.release();
  54.       mCamera = null;

  55.       super.onPause();
  56.   }

  57.   @Override
  58.   public boolean onCreateOptionsMenu(Menu menu) {
  59.     // TODO Auto-generated method stub

  60.     menu.add(0, MENU_TAKE_PICTURE, 0, "照相");
  61.     menu.add(0, MENU_SHOW_PICTURE, 0, "顯示照片");

  62.     return super.onCreateOptionsMenu(menu);
  63.   }

  64.   @Override
  65.   public boolean onOptionsItemSelected(MenuItem item) {
  66.     // TODO Auto-generated method stub
  67.    
  68.    
  69.     switch (item.getItemId()) {
  70.    
  71.     case MENU_TAKE_PICTURE:
  72.       mCamera.takePicture(camShutterCallback, camRawDataCallback, camJpegCallback);
  73.       break;
  74.    
  75.     case MENU_SHOW_PICTURE:
  76.       Intent it = new Intent(Intent.ACTION_VIEW);
  77.       File file = new File(getPhotoFileName());
  78.       it.setDataAndType(Uri.fromFile(file), "image/");
  79.       startActivity(it);
  80.       break;
  81.     }
  82.    
  83.     return super.onOptionsItemSelected(item);
  84.   }

  85.   ShutterCallback camShutterCallback = new ShutterCallback() {
  86.     public void onShutter() {
  87.       // 通知使用者已完成拍照,例如發出一個聲音
  88.     }
  89.   };

  90.   PictureCallback camRawDataCallback = new PictureCallback() {
  91.     public void onPictureTaken(byte[] data, Camera camera) {
  92.       // 用來接收原始的影像資料
  93.     }
  94.   };
  95.     //使用當前時間
  96.     private String getPhotoFileName() {  
  97.           Date date = new Date(System.currentTimeMillis());  
  98.           SimpleDateFormat dateFormat = new SimpleDateFormat(  
  99.                   "'IMG'_yyyy-MM-dd HH:mm:ss");  
  100.           return dateFormat.format(date) + ".jpg";  
  101.       }
  102.      

  103.   PictureCallback camJpegCallback = new PictureCallback() {
  104.     public void onPictureTaken(byte[] data, Camera camera) {
  105.       // 用來接收壓縮成jpeg格式的影像資料

  106.       FileOutputStream outStream = null;
  107.       try {
  108.         outStream = new FileOutputStream(getPhotoFileName());
  109.         outStream.write(data);
  110.         outStream.close();
  111.       } catch (IOException e) {
  112.         Toast.makeText(Main.this, "影像檔儲存錯誤!", Toast.LENGTH_SHORT)
  113.           .show();
  114.       }

  115.       mCamera.startPreview();
  116.     }
  117.   };
  118. }
複製代碼
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
whl | 收聽TA | 只看該作者
發表於 2013-7-10 06:58
檔案名稱可以用 : 嗎?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| a125511 | 收聽TA | 只看該作者
發表於 2013-7-10 14:03
修改成  "'IMG'_yyyyMMddHHmmss" 一樣不行 是不是存檔方式不能這樣寫?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
xjxuvup | 收聽TA | 只看該作者
發表於 2013-7-11 13:40
本帖最後由 xjxuvup 於 2013-7-13 01:46 編輯

這個部份我沒做過
但是我看你的IMG前後怎麼多了''('IMG')
檔名應該不能有這種符號吧

修正:抱歉,測試過後,發現 ' 可以使用

建議把log發出來比較好找error在哪
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則