Android 将图像保存到sd卡文件夹
我试图在SD卡上创建一个文件夹,并将所有图像保存在SD卡上,而不是保存在内存中Android 将图像保存到sd卡文件夹,android,android-intent,Android,Android Intent,我试图在SD卡上创建一个文件夹,并将所有图像保存在SD卡上,而不是保存在内存中 public class CameraActivity extends Activity { private static final int CAMERA_PIC_REQUEST = 1111; private ImageView mImage; public void onCreate(Bundle savedInstanceState) { super.onCreat
public class CameraActivity extends Activity {
private static final int CAMERA_PIC_REQUEST = 1111;
private ImageView mImage;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImage = (ImageView) findViewById(R.id.result);
//1
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File image = new File(Environment.getExternalStorageDirectory()+File.separator +"mypics");
Uri fileUri = Uri.fromFile(image);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, CAMERA_PIC_REQUEST);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST) {
//2
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
EditText etext = (EditText) findViewById(R.id.editTextLocation);
Toast.makeText(getBaseContext(), data.getExtras().get("data").toString(), Toast.LENGTH_LONG).show();
mImage.setImageBitmap(thumbnail);
etext.setText(data.getExtras().get("data").toString());
//3
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
//4
String state=Environment.getExternalStorageState();
Toast.makeText(getBaseContext(), state, Toast.LENGTH_LONG).show();
File file = new File(Environment.getExternalStorageDirectory()+File.separator +"mypics");
if(!file.exists())
if(file.mkdirs())
Log.v("Mobitracker","success");
if (Environment.MEDIA_MOUNTED.equals(state))
Toast.makeText(getBaseContext(), "Yes its read only", Toast.LENGTH_LONG).show();
if ( Environment.isExternalStorageRemovable ())
Toast.makeText(getBaseContext(), "Yes its internal card", Toast.LENGTH_LONG).show();
//Create New file and name it Image2.PNG
File file1 = new File(file, "Image2.PNG");
try {
file1.createNewFile();
FileOutputStream fo = new FileOutputStream(file1);
//5
fo.write(bytes.toByteArray());
fo.flush();
fo.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
Toast.makeText(getBaseContext(), "Please take snap again", Toast.LENGTH_LONG).show();
}
}
这是我的代码,我尝试了很多东西,但仍然不可能将其保存在internalmemory DCIM文件夹中。为什么
我得到的输出是
安装
是的,它是只读的
我并没有连接到系统,但仍然是相同的问题,我甚至尝试重新启动手机,但仍然是一样的。
我使用的是索尼xperia tipo mobile 4.0.4操作系统
请帮助我,我尝试了所有的线程
你们能帮帮我吗
我的权限是
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
而且我可以在图像视图中看到位图图像,但是
Toast.makeText(getBaseContext(),data.getExtras().get(“data”).toString(),Toast.LENGTH_LONG.show()
正在返回一些android。graphics@422020有些事情您应该使用outputstream来编写内容。请参阅以获取帮助 或者执行以下操作(参见完整的线程): 仔细阅读Android培训贴子,找出问题所在。正如《华盛顿邮报》所说
The Android Camera application saves a full-size photo if you give it a file to save into.
因此,如果您确实传递了文件的Uri
,它将仅存储在DCIM中,您应该使用此Uri
访问图像
您是否在清单文件中指定了相关权限?是的,我已指定权限我可以使用该Uri存储在数据库中?我的意思是,我可以在其他时间使用相同的uri并检索映像吗?是的,您也可以使用该uri存储在db中并检索映像。File image=new File(Environment.getExternalStorageDirectory()+File.separator+“mypics”);urifileuri=Uri.fromFile(图像);intent.putExtra(MediaStore.EXTRA_输出,fileUri);我可以这样做并将此fileUri存储在db中吗?文件名是什么?最好将图像路径存储在数据库中,您可以通过
image.getAbsolutePath()获取该路径代码>我得到空指针异常你能给我一些使用uri的代码行吗?
The Android Camera application saves a full-size photo if you give it a file to save into.