问题描述
- 使用照相机拍照,获取图片路径
-
在程序中我使用手机相机拍一张照片,然后把这张图片保存在手机图库里面。然后我想获取图片的路径,再保存到数据库中。如何实现呢?public void onClick(View v){ switch(v.getId()) { case R.id.btnLoadPic: //Options for the dialogue menu final CharSequence[] items = {"Camera", "Gallery"}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Choose an Option"); builder.setItems(items, new DialogInterface.OnClickListener() { /** * Make onclick functionality for the options in the dialogue menu */ public void onClick(DialogInterface dialog, int item) { // Camera option if (item == 0){ PackageManager pm = getPackageManager(); if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)){ //Toast.makeText(this, "camera", Toast.LENGTH_SHORT).show(); dispatchTakePictureIntent(11); } else { Toast.makeText(null, "No camera avalible", Toast.LENGTH_SHORT).show(); } } // Gallery option this works fine private void dispatchTakePictureIntent(int actionCode) { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(takePictureIntent, actionCode); //handleSmallCameraPhoto(takePictureIntent); } private void handleSmallCameraPhoto(Intent intent) { Bundle extras = intent.getExtras(); Bitmap mImageBitmap = (Bitmap) extras.get("data"); ImageView mImageView = (ImageView) this.findViewById(R.id.imagePlayer); mImageView.setImageBitmap(mImageBitmap); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { handleSmallCameraPhoto(data); }
后面的代码访问照相机,然后在 imageview 中显示图像,如何在一个字符串格式中获取图片的路径?
解决方案
测试使用下面的代码:
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(destination));
startActivityForResult(intent, REQUEST_IMAGE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if( requestCode == REQUEST_IMAGE && resultCode == Activity.RESULT_OK ){
try {
FileInputStream in = new FileInputStream(destination);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 10;
imagePath = destination.getAbsolutePath();
tvPath.setText(imagePath);
Bitmap bmp = BitmapFactory.decodeStream(in, null, options);
picture.setImageBitmap(bmp);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
else{
tvPath.setText("Request cancelled");
}
}
public String dateToString(Date date, String format) {
SimpleDateFormat df = new SimpleDateFormat(format);
return df.format(date);
}
}
不要忘记在 manifest 文件中添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
时间: 2024-10-03 12:48:04