private
String mFileimageRoute = Environment.getExternalStorageDirectory().getAbsolutePath();
Button button1;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (Button) findViewById(R.id.shot_picture);
button1.setOnClickListener(
new
View.OnClickListener() {
public
void
onClick(View v) {
Toast.makeText(getApplicationContext(),
"사진첩을 엽니다"
,
0
).show();
startActivity(mIntent);
}
});
mPreview = (Preview) findViewById(R.id.camera_preview);
mImageData =
new
byte
[
6
][];
}
@Override
public
boolean
onTouchEvent(MotionEvent event) {
if
(event.getAction() == MotionEvent.ACTION_DOWN) {
if
(mPreview.mCamera !=
null
) {
mPreview.mCamera.takePicture(mShutterCallback, mPictureCallbackRaw,
mPictureCallbackJpeg);
}
}
return
false
;
}
@Override
protected
void
onDestroy() {
if
(mPreview !=
null
) {
Log.e(
"onDestroy"
,
"onDestroy..."
);
if
(mPreview.mCamera !=
null
) {
mPreview.mCamera.stopPreview();
mPreview.mCamera.release();
mPreview.mCamera =
null
;
}
}
super
.onDestroy();
}
private
int
getPreFileName() {
if
(sPrefs ==
null
) {
sPrefs = getSharedPreferences(KEY_POPUP_ENV, Context.MODE_PRIVATE);
}
mFileNameYear = sPrefs.getInt(SAVE_FILE_YEAR,
0
);
mFileNameMonth = sPrefs.getInt(SAVE_FILE_MONTH,
0
);
mFileNameDay = sPrefs.getInt(SAVE_FILE_DATE,
0
);
mFileNameCount = sPrefs.getInt(SAVE_FILE_COUNT,
0
);
return
mFileNameCount;
}
private
String getRealFileName() {
MakeFileName_Demo();
return
mFilename;
}
private
void
MakeFileName_Demo() {
DecimalFormat decimalFormat =
new
DecimalFormat(
"00"
);
DecimalFormat NumFormat =
new
DecimalFormat(
"0000"
);
Calendar rightNow = Calendar.getInstance();
int
year = rightNow.get(Calendar.YEAR) %
100
;
int
month = rightNow.get(Calendar.MONTH);
int
date = rightNow.get(Calendar.DATE);
int
num = getPreFileName();
String result =decimalFormat.format(month) + decimalFormat.format(date);
String FormatNum = NumFormat.format(num);
mFilename = result +
"_"
+ FormatNum;
if
(files.length ==
0
) {
num++;
}
else
if
(files.length >
0
) {
if
(CompareDate(year, month, date) ==
true
) {
num++;
}
else
if
(CompareDate(year, month, date) ==
false
) {
num =
0
;
}
}
SaveFileName(year, month, date, num);
}
private
boolean
CompareDate(
int
year,
int
month,
int
date) {
boolean
ret =
false
;
if
(year == getFileNameYear()) {
if
(month == getFileNameMonth()) {
if
(date == getFileNameDay()) {
ret =
true
;
}
}
}
return
ret;
}
private
int
getFileNameYear() {
return
mFileNameYear;
}
private
int
getFileNameMonth() {
return
mFileNameMonth;
}
private
int
getFileNameDay() {
return
mFileNameDay;
}
private
void
SaveFileName(
int
year,
int
month,
int
date,
int
num) {
SharedPreferences.Editor editor = sPrefs.edit();
editor.putInt(SAVE_FILE_YEAR, year);
editor.putInt(SAVE_FILE_MONTH, month);
editor.putInt(SAVE_FILE_DATE, date);
editor.putInt(SAVE_FILE_COUNT, num);
editor.commit();
}
public
int
SaveImage() {
int
ret =
0
;
try
{
FileOutputStream fileoutstream =
new
FileOutputStream(mFileimageRoute+getRealFileName()+
".jpg"
);
fileoutstream.write(mImageData[
0
]);
fileoutstream.close();
System.gc();
}
catch
(FileNotFoundException fne)
{
Log.e(
"writing and scanning image "
, fne.toString());
fne.printStackTrace();
ret = -
1
;
}
catch
(IOException ioe)
{
Log.e(
"writing and scanning image "
, ioe.toString());
ioe.printStackTrace();
ret = -
1
;
}
catch
(Exception e)
{
ret = -
1
;
}
return
ret;
}
Camera.PictureCallback mPictureCallbackRaw =
new
Camera.PictureCallback() {
public
void
onPictureTaken(
byte
[] data, Camera c) {
Log.e(
"mPictureCallbackRaw "
,
"11111"
);
}
};
Camera.PictureCallback mPictureCallbackJpeg =
new
Camera.PictureCallback() {
public
void
onPictureTaken(
byte
[] data, Camera c) {
Log.e(
"PictureCallback "
,
"11111"
);
Log.e(
"PictureCallback "
,
"22222"
);
mImageData[
0
] = data;
Display defaultDisplay = ((WindowManager) getSystemService(WINDOW_SERVICE))
.getDefaultDisplay();
int
width = defaultDisplay.getWidth();
int
height = defaultDisplay.getHeight();
Log.e(String.valueOf(width), String.valueOf(height));
Log.e(String.valueOf(width), String.valueOf(height));
Log.e(String.valueOf(width), String.valueOf(height));
ShowSaveDailog();
}
};
Camera.ShutterCallback mShutterCallback =
new
Camera.ShutterCallback() {
public
void
onShutter() {
Log.i(getClass().getSimpleName(),
"SHUTTER CALLBACK"
);
}
};
Camera.AutoFocusCallback cb =
new
Camera.AutoFocusCallback() {
public
void
onAutoFocus(
boolean
success, Camera c) {
Log.e(
"AutoFocusCallback "
,
"11111"
);
if
(success) {
ToneGenerator tg =
new
ToneGenerator(
AudioManager.STREAM_SYSTEM,
100
);
if
(tg !=
null
)
tg.startTone(ToneGenerator.TONE_PROP_BEEP2);
gFocussed =
true
;
try
{
if
(gCameraPressed) {
if
(mPreview.mCamera !=
null
) {
mPreview.mCamera.takePicture(mShutterCallback,
mPictureCallbackRaw, mPictureCallbackJpeg);
}
}
}
catch
(Exception e) {
Log.i(
"Exc"
, e.toString());
}
}
else
{
ToneGenerator tg =
new
ToneGenerator(
AudioManager.STREAM_SYSTEM,
100
);
if
(tg !=
null
)
tg.startTone(ToneGenerator.TONE_PROP_BEEP2);
try
{
if
(gCameraPressed) {
if
(mPreview.mCamera !=
null
) {
mPreview.mCamera.takePicture(mShutterCallback,
mPictureCallbackRaw, mPictureCallbackJpeg);
}
}
}
catch
(Exception e) {
Log.i(
"Exc"
, e.toString());
}
}
}
};
private
void
ShowSaveDailog() {
Toast.makeText(
this
,
"save image"
, Toast.LENGTH_SHORT).show();
SaveImage();
mImageData[
0
] =
null
;
if
(mPreview.mCamera !=
null
) {
try
{
mPreview.mCamera.startPreview();
}
catch
(Exception e) {
}
}
}
}