我已经将以下代码更新为以下行更改,但是没有用:
//设置Image
位置
File file = new File(Environment.getExternalStorageDirectory() + "/Skynet/images/t1.jpg" );
Uri uriTarget = Uri.fromFile(file);
我想将
jpeg
保存到上述目录,但由于它正在使用媒体存储,所以不知道。任何提示做到这一点。import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class AndroCamera extends Activity {
private static final int IMAGE_CAPTURE = 0;
private Button startBtn;
private Uri imageUri;
private ImageView imageView;
/** Called when the activity is first created.
* sets the content and gets the references to
* the basic widgets on the screen like
* {@code Button} or {@link ImageView}
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView = (ImageView)findViewById(R.id.img);
startBtn = (Button) findViewById(R.id.startBtn);
startBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startCamera();
}
});
}
public void startCamera() {
Log.d("ANDRO_CAMERA", "Starting camera on the phone...");
String fileName = "testphoto.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,
"Image capture by camera");
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
imageUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, IMAGE_CAPTURE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == IMAGE_CAPTURE) {
if (resultCode == RESULT_OK){
Log.d("ANDRO_CAMERA","Picture taken!!!");
imageView.setImageURI(imageUri);
}
}
}
}
最佳答案
那就是因为您使用的Uri
来自媒体管理器,也许如果您使用定义的Uri
要将其保存到它,它应该可以工作。
这是一个提示:
mImageUri= Uri.fromFile( new File( Environment.getExternalStorageDirectory(),
"pic_" + String.valueOf( System.currentTimeMillis() ) + ".jpg" ) );
在此将其保存到根目录,但是由于要创建文件,因此可以将其放置在所需的任何位置。只要确保目录存在,否则创建它即可。
就像@Simon所说的那样,请确保您有权在外部存储上进行写操作。
更新1:
当前您有类似的东西:
imageUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
因此,插入操作只是将图像插入到
MediaStore
表中...但是,如果那是您实际需要的,则需要覆盖Data
中的MediaStore
列。在您的
contentValues
上添加如下内容:values.put( MediaStore.Images.ImageColumns.DATA, fullPath );
如果不需要使用
MediaStore
表,则不需要执行插入操作,因此不需要ContentValues
。关于android - 如何将jpg图像保存到SD卡中我自己的目录中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10922186/