Android 台灣中文網
標題:
無法使用當前時間作為存檔檔名 幫幫忙
[打印本頁]
作者:
a125511
時間:
2013-7-8 17:32
標題:
無法使用當前時間作為存檔檔名 幫幫忙
package tw.android;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SurfaceHolder;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
public class Main extends Activity {
private static final int MENU_TAKE_PICTURE = Menu.FIRST,
MENU_SHOW_PICTURE = Menu.FIRST + 1;
private Camera mCamera;
private CameraPreview mCamPreview;
Thread readThread;
/** Called when the activity is first created. */
@Override
public void 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);
mCamPreview = new CameraPreview(this);
setContentView(mCamPreview);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
mCamera = Camera.open();
mCamPreview.set(this, mCamera);
super.onResume();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
mCamera.stopPreview();
mCamera.release();
mCamera = null;
super.onPause();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, MENU_TAKE_PICTURE, 0, "照相");
menu.add(0, MENU_SHOW_PICTURE, 0, "顯示照片");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case MENU_TAKE_PICTURE:
mCamera.takePicture(camShutterCallback, camRawDataCallback, camJpegCallback);
break;
case MENU_SHOW_PICTURE:
Intent it = new Intent(Intent.ACTION_VIEW);
File file = new File(getPhotoFileName());
it.setDataAndType(Uri.fromFile(file), "image/");
startActivity(it);
break;
}
return super.onOptionsItemSelected(item);
}
ShutterCallback camShutterCallback = new ShutterCallback() {
public void onShutter() {
// 通知使用者已完成拍照,例如發出一個聲音
}
};
PictureCallback camRawDataCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
// 用來接收原始的影像資料
}
};
//使用當前時間
private String getPhotoFileName() {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat(
"'IMG'_yyyy-MM-dd HH:mm:ss");
return dateFormat.format(date) + ".jpg";
}
PictureCallback camJpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
// 用來接收壓縮成jpeg格式的影像資料
FileOutputStream outStream = null;
try {
outStream = new FileOutputStream(getPhotoFileName());
outStream.write(data);
outStream.close();
} catch (IOException e) {
Toast.makeText(Main.this, "影像檔儲存錯誤!", Toast.LENGTH_SHORT)
.show();
}
mCamera.startPreview();
}
};
}
複製代碼
作者:
whl
時間:
2013-7-10 06:58
檔案名稱可以用 : 嗎?
作者:
a125511
時間:
2013-7-10 14:03
修改成 "'IMG'_yyyyMMddHHmmss" 一樣不行 是不是存檔方式不能這樣寫?
作者:
xjxuvup
時間:
2013-7-11 13:40
本帖最後由 xjxuvup 於 2013-7-13 01:46 編輯
這個部份我沒做過
但是我看你的IMG前後怎麼多了''('IMG')
檔名應該不能有這種符號吧
修正:抱歉,測試過後,發現 ' 可以使用
建議把log發出來比較好找error在哪
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1