안 드 로 이 드 호출 시스템 카 메 라 를 페이지 로 되 돌려 로 컬 에 저장 하고 그림 을 문자열 로 변환 합 니 다.
필요 한 패 키 지 는 comons - codec - 1.5. jar 입 니 다.
< -- layout 레이아웃 -- >
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFD3D7DF" >
<LinearLayout
android:id="@+id/takePicturePhone"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="10dip"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_marginTop="10dip"
android:background="@drawable/bg_frame"
android:gravity="center_vertical"
android:orientation="vertical"
android:paddingBottom="2dip"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:paddingTop="10dip" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageButton
android:id="@+id/takePhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/takepicture" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="154dp" >
<ImageView
android:id="@+id/preview"
android:layout_width="wrap_content"
android:layout_height="92dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<--activity-->
package zhang.xue.yi;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.codec.binary.Base64;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
/**
*
*
* @author Mr.Z
* @time 2012-5-16
*
*/
public class TakePhotoActivity extends Activity {
private Context context = TakePhotoActivity.this;
private ImageButton btnTakePhone;
private String path;
private ImageView imageView;
private Bitmap[] bmps = new Bitmap[6];
private Bundle bundle;
private LinearLayout takePicturePhone = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.locationapp);
takePicturePhone = (LinearLayout) findViewById(R.id.takePicturePhone);
useTakePicture();
}
/**
*
*/
private void useTakePicture() {
imageView = (ImageView) this.findViewById(R.id.preview);
btnTakePhone = (ImageButton) findViewById(R.id.takePhone);
btnTakePhone.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//
bmps[0] = BitmapFactory.decodeResource(getResources(), R.drawable.takepicture2);
btnTakePhone.setImageBitmap(bmps[0]);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
//
bmps[1] = BitmapFactory.decodeResource(getResources(), R.drawable.takepicture);
btnTakePhone.setImageBitmap(bmps[1]);
}
return false;
}
});
btnTakePhone.setOnClickListener(new Button.OnClickListener() {
public void onClick(View arg0) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);
}
});
}
/**
*
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // sd
Toast.makeText(context, "SD !", 1000);
return;
}
bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");// , Bitmap
FileOutputStream b = null;
File file = new File("/sdcard/channel/");
file.mkdirs();//
path = "/sdcard/channel/" + formatDatetime(new Date(), "yyyyMMddHHmmss") + ".jpg";
try {
System.out.println("path:" + path);
b = new FileOutputStream(path);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);//
getImageBinary();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
b.flush();
b.close();
} catch (IOException e) {
e.printStackTrace();
}
}
this.imageView.setImageBitmap(bitmap);// ImageView
}
}
/**
* [BASE64]
*
* @return
*/
public String getImageBinary() {
System.out.println("path--->" + path);
try {
FileInputStream fis = new FileInputStream(path);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[8192];
int count = 0;
while ((count = fis.read(buffer)) >= 0) {
baos.write(buffer, 0, count);
}
String uploadBuffer = new String(Base64.encodeBase64(baos.toByteArray()));
fis.close();
System.out.println(" :---->" + uploadBuffer);
return uploadBuffer;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
*
*
* @param format , yyyyMMdd
* @return dateTimeString
*/
public static String formatDatetime(Date date, String format) {
DateFormat df = new SimpleDateFormat(format);
return df.format(date);
}
}
< -- 권한 -- >
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.