拍照与摄像头的意图,并保存到文件 [英] Take picture with camera intent and save to file
本文介绍了拍照与摄像头的意图,并保存到文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
可能重复:
<一href="http://stackoverflow.com/questions/8588838/android-camera-save-image-into-a-new-folder-in-sd-card">Android相机 - 图像保存到SD卡中一个新的文件夹
我试图拍照,并将其保存到一个文件中。问题卡梅斯我试图将位图保存到文件中。这是我的code:
私人无效takePic(){
意图cameraIntent =新的意图(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent,2);
}
公共无效onActivityResult(INT申请code,INT结果code,意图数据){
如果(要求code == 2){
。位图照片=(位图)data.getExtras()获得(数据);
ImageView的试验=(ImageView的)findViewById(R.id.test);
test.setImageBitmap(照片);
尝试 {
FileOutputStream中出=新的FileOutputStream(文件名);
photo.com preSS(Bitmap.Com pressFormat.JPEG,90,出);
}赶上(例外五){
e.printStackTrace();
}
}
}
而在logcat中的例外:
04-02 14:46:51.975:W / IInputConnectionWrapper(2225):showStatusIcon上的非活动InputConnection
04-02 14:46:56.135:W / System.err的(2225):java.io.FileNotFoundException:/文件名(只读文件系统)
04-02 14:46:56.135:W / System.err的(2225):在org.apache.harmony.luni.platform.OSFileSystem.open(本机方法)
04-02 14:46:56.145:W / System.err的(2225):在dalvik.system.BlockGuard $ WrappedFileSystem.open(BlockGuard.java:232)
04-02 14:46:56.145:W / System.err的(2225):在java.io.FileOutputStream中的&LT; INIT&GT;(FileOutputStream.java:94)
04-02 14:46:56.145:W / System.err的(2225):在java.io.FileOutputStream中的&LT; INIT&GT;(FileOutputStream.java:165)
04-02 14:46:56.145:W / System.err的(2225):在java.io.FileOutputStream中的&LT; INIT&GT;(FileOutputStream.java:144)
解决方案
RY以下code是解决你的问题之一::
静态乌里capturedImageUri = NULL;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
this.imageView =(ImageView的)this.findViewById(R.id.imageView1);
按钮photoButton =(按钮)this.findViewById(R.id.button1);
photoButton.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
日历CAL = Calendar.getInstance();
档案文件=新的文件(Environment.getExternalStorageDirectory(),(cal.getTimeInMillis()+.JPG));
如果(!file.exists()){
尝试 {
file.createNewFile();
}赶上(IOException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
} 其他 {
file.delete();
尝试 {
file.createNewFile();
}赶上(IOException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
}
capturedImageUri = Uri.fromFile(文件);
意图I =新的意图(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT,capturedImageUri);
startActivityForResult(ⅰ,CAMERA_RESULT);
}
});
保护无效onActivityResult(INT申请code,INT结果code,意图数据){
如果(要求code == CAMERA_REQUEST){
//位图的照片=(位图)data.getExtras()获得(数据);
//imageView.setImageBitmap(photo);
尝试 {
点阵位图= MediaStore.Images.Media.getBitmap(getApplicationContext()getContentResolver(),capturedImageUri。);
imageView.setImageBitmap(位);
}赶上(FileNotFoundException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}赶上(IOException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
}
}
Possible Duplicate:
Android Camera - Save image into a new folder in SD Card
i'm trying to take picture and save it to a file. The problem cames i'm trying to save the bitmap to a file. Here is my code:
private void takePic() {
Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, 2);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 2) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
ImageView test = (ImageView) findViewById(R.id.test);
test.setImageBitmap(photo);
try {
FileOutputStream out = new FileOutputStream("filename");
photo.compress(Bitmap.CompressFormat.JPEG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
}
}
And the exceptions in logcat:
04-02 14:46:51.975: W/IInputConnectionWrapper(2225): showStatusIcon on inactive InputConnection
04-02 14:46:56.135: W/System.err(2225): java.io.FileNotFoundException: /filename (Read-only file system)
04-02 14:46:56.135: W/System.err(2225): at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
04-02 14:46:56.145: W/System.err(2225): at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
04-02 14:46:56.145: W/System.err(2225): at java.io.FileOutputStream.<init>(FileOutputStream.java:94)
04-02 14:46:56.145: W/System.err(2225): at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
04-02 14:46:56.145: W/System.err(2225): at java.io.FileOutputStream.<init>(FileOutputStream.java:144)
解决方案
ry the below code is one of the solution to your problem::
static Uri capturedImageUri = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.imageView = (ImageView) this.findViewById(R.id.imageView1);
Button photoButton = (Button) this.findViewById(R.id.button1);
photoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar cal = Calendar.getInstance();
File file = new File(Environment.getExternalStorageDirectory(), (cal.getTimeInMillis() + ".jpg"));
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
file.delete();
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
capturedImageUri = Uri.fromFile(file);
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri);
startActivityForResult(i, CAMERA_RESULT);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST) {
//Bitmap photo = (Bitmap) data.getExtras().get("data");
//imageView.setImageBitmap(photo);
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), capturedImageUri);
imageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这篇关于拍照与摄像头的意图,并保存到文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文