public
class
CameraTestActivity
extends
Activity {
private
static
final
String TAG =
"CameraTestActivity"
;
private
Camera camera;
private
ImageView imageView;
private
boolean
inProgress;
byte
[] data;
DataOutputStream dos;
ImageView view;
SurfaceView surfaceView;
private
SurfaceHolder.Callback surfaceListener =
new
SurfaceHolder.Callback() {
@Override
public
void
surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
try
{
camera.setPreviewDisplay(holder);
}
catch
(Exception e) {
e.printStackTrace();
}
}
@Override
public
void
surfaceDestroyed(SurfaceHolder holder) {
camera.release();
camera =
null
;
}
@Override
public
void
surfaceChanged(SurfaceHolder holder,
int
format,
int
width,
int
height) {
Camera.Parameters parameters =
camera.getParameters();
parameters.setPreviewSize(width, height);
camera.setParameters(parameters);
camera.startPreview();
}
};
private
Camera.ShutterCallback shutterListener =
new
Camera.ShutterCallback() {
@Override
public
void
onShutter() {
if
(camera !=
null
&& inProgress ==
false
){
camera.takePicture(
shutterListener,
null
,
pictureListener);
inProgress =
true
;
}
}
};
Bitmap bitmap;
private
Camera.PictureCallback pictureListener =
new
Camera.PictureCallback() {
@Override
public
void
onPictureTaken(
byte
[] data, Camera camera) {
if
(data !=
null
){
CameraTestActivity.
this
.data=data;
bitmap = BitmapFactory.decodeByteArray(data,
0
,
data.length,
null
);
imageView.setImageBitmap(bitmap);
doSaveFile();
doFileUpload();
Toast.makeText(CameraTestActivity.
this
,
"서버에 파일을 성공적으로 전송하였습니다."
,
Toast.LENGTH_LONG).show();
camera.startPreview();
inProgress =
false
;
}
}
};
File saveFile =
new
File(
"/mnt/sdcard/DCIM/images04.jpg"
);
public
void
doSaveFile(){
OutputStream out =
null
;
try
{
saveFile.createNewFile();
out =
new
FileOutputStream(saveFile);
bitmap.compress(CompressFormat.JPEG,
70
, out);
}
catch
(Exception e){
e.printStackTrace();
}
finally
{
try
{ out.close(); }
catch
(IOException e) {e.printStackTrace();}
}
}
public
void
doFileUpload(){
try
{
HttpClient httpClient =
new
DefaultHttpClient();
HttpPost post =
new
HttpPost(url);
FileBody bin =
new
FileBody(saveFile);
MultipartEntity multipart =
new
MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
multipart.addPart(
"images"
, bin);
post.setEntity(multipart);
HttpResponse response = httpClient.execute(post);
HttpEntity resEntity = response.getEntity();
}
catch
(Exception e) {
e.printStackTrace();
}
}
@Override
protected
void
onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.ImageView01);
surfaceView =
(SurfaceView) findViewById(R.id.SurfaceView01);
SurfaceHolder holder = surfaceView.getHolder();
holder.addCallback(surfaceListener);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
super
.onCreate(savedInstanceState);
}
@Override
public
boolean
onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return
true
;
}
@Override
public
boolean
onKeyDown(
int
keyCode, KeyEvent event) {
if
(event.getAction() == KeyEvent.ACTION_DOWN ){
switch
(keyCode){
case
KeyEvent.KEYCODE_CAMERA:
shutterListener.onShutter();
return
true
;
}
}
return
super
.onKeyDown(keyCode, event);
}
@Override
public
boolean
onTouchEvent(MotionEvent event) {
if
(event.getAction() == MotionEvent.ACTION_DOWN) {
shutterListener.onShutter();
}
return
true
;
}
}