Android가 카메라를 호출하여 사진을 sd카드에 저장하는 방법

Android에서 사진을 찍는 데는 두 가지 방법이 있는데, 하나는 시스템이 자체적으로 가지고 있는 카메라를 호출하여 되돌아오는 사진 데이터를 사용하는 것이다.또 하나는 자신이 카메라 종류와 다른 관련 종류로 카메라 기능을 실현하는 것이다. 이런 방법은 제도를 정하는 것이 비교적 높고 염색도 복잡하기 때문에 일반적인 응용은 첫 번째만 사용하면 된다.Intent로 카메라 부팅 코드:
 
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1); onActivityResult(int requestCode, int resultCode, Intent data) Bitmap 。Bitmap bitmap = (Bitmap) data.getExtras().get("data");
이미지를 sd카드에 저장하기 전에 sd카드가 사용할 수 있는지 확인하는 것이 좋습니다
 
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // sd
Log.v("TestFile",
"SD card is not avaiable/writeable right now.");
return;
}
다음 코드는 이미지 파일을'sdcard/myImage/'폴더에 저장할 수 있습니다. 이름은'111.jpg'입니다
 
File file = new File("/sdcard/myImage/");
file.mkdirs();//
String fileName = "/sdcard/myImage/111.jpg";
try {
b = new FileOutputStream(fileName);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);//
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
b.flush();
b.close();
} catch (IOException e) {
e.printStackTrace();
}
}
또 주의해야 할 것은 sd카드 파일을 읽기와 쓰기는 반드시 Mainifest에 있어야 한다는 것이다.xml 파일의 설정 권한:
 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
데모는 시스템 카메라를 호출하여 사진을 찍어 화면에 표시하고 sd카드에 저장합니다.전체 코드는 다음과 같습니다. MyCaremaActivity.java
 
package barry.android.c;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MyCaremaActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);
}
});
}
@Override
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
Log.v("TestFile",
"SD card is not avaiable/writeable right now.");
return;
}
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");// , Bitmap
FileOutputStream b = null;
File file = new File("/sdcard/myImage/");
file.mkdirs();//
String fileName = "/sdcard/myImage/111.jpg";
try {
b = new FileOutputStream(fileName);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);//
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
b.flush();
b.close();
} catch (IOException e) {
e.printStackTrace();
}
}
((ImageView) findViewById(R.id.imageView)).setImageBitmap(bitmap);// ImageView
}
}
}
main.xml
 
<?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:orientation="vertical" >
<Button
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" " />
<ImageView
android:id="@+id/imageView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#999999" />
</LinearLayout>
AndroidMainifest.xml
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="barry.android.c"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".MyCaremaActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

좋은 웹페이지 즐겨찾기