Andriod调用相机拍照(存本地)和直接调用本地图片(一)

一、调用相机拍照
1.指定要跳转到相机(图片不保存)
Intent mIntent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivtiyForResult(mIntent,FROM_CAMERA);
2.指定跳转到相机(图片保存到本地)
String imagePath;
在调用相机之前,先检查SD卡是否可用,存在即创建文件夹
String sdCard =Environment.getExternalStorageState();
if(!sdCard.equals(Environment.MEDIA_MOUNTED)){
Toast.makeText(context,”SD卡不可用”,0).show;
}
File file =new File(“/sdcard/ling/”);
file.mkdirs();
String imagePathName = System.currentTimeMillis()+”.jpg”;
imagePath =file+imagePathName;
//API规定传入拍照得到的是图片的存储位置的uri,所以将图片的uri放入intent中,在 onActivtityResult()中即可获得uri。否则,Bitmap将以压缩后返回到当前activity。
File uriFile =new File(file,imagePathName);
try {
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
Intent nIntent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
nIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.from(uriFile)); //将file对象转为uri,并指定图片输出地址;即可将拍照后的图片保存到传入的uri对应的File下。
startActivityForResult(nIntent,FROM_CAMERA_SAVED);

二、直接调取图库
startActivityForResult(new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI),FROMM_FILE);

三、处理拿到的图片
protected void onActivityForResult(int requestCode,int resultCode,Intent data){
super.onActivityForResult(resquestCode,resultCode,data);
if(resultCode==RESULT_OK){
switch(requestCode){
case:FROM_CAMERA:
Bundle bundle =data.getExtras();
Bitmap bitmap =(Bitmap)bundle.get(“data);
break;
case:FROM_CAMERA_SAVED:
File files =new File(imagePath);
Uri uri =Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver), files.getAbsolutePath(), null, null));
…………..将uri 转为String 路径
Uri uri = data.getData();
String[] proj = {MediaStore.Images.Media.DATA};
Cursor actualimagecursor = managedQuery(uri, proj, null, null, null);
int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
actualimagecursor.moveToFirst();
String imagePath = actualimagecursor.getString(actual_image_column_index);
//根据路径做自己需要的处理
break;
case:FROM_FILE:
Uri uri =data.getData();
//可直接通过uri将图片放到ImageView上
imageView.setImageUri(uri);
//可将Uri转为String 路径,上传图片到服务器

break;

}
} 

}

最后,要记得加权限:
;//给SD卡写入内容的权限
//调用相机权限

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Android Studio 中调用 PDA(便携式数据终端)进行拍照有以下几个步骤: 1. 首先,需要在 AndroidManifest.xml 文件中添加相机权限。可以在 `<manifest>` 标签内添加以下代码: ```xml <uses-permission android:name="android.permission.CAMERA" /> ``` 2. 在项目中创建一个用于调用相机的按钮(或其他触发拍照的事件)。可以在布局文件中添加一个按钮,并设置一个唯一的 ID,例如: ```xml <Button android:id="@+id/btnCapturePhoto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拍照" /> ``` 3. 在对应的 Activity(或 Fragment)中,找到该按钮并设置点击事件的监听器。在监听器中调用相机拍照的方法。可以在 Activity(或 Fragment)的 `onCreate` 方法中添加以下代码: ```java Button btnCapturePhoto = findViewById(R.id.btnCapturePhoto); btnCapturePhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dispatchTakePictureIntent(); } }); ``` 4. 在 Activity(或 Fragment)中创建 `dispatchTakePictureIntent` 方法,用于调用相机拍照。可以参考以下示例代码: ```java private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } ``` 5. 在 Activity(或 Fragment)中重写 `onActivityResult` 方法,以处理拍照后的结果。可以参考以下示例代码: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Bundle extras = data.getExtras(); Bitmap imageBitmap = (Bitmap) extras.get("data"); // 处理拍照后的图像,例如保到本地或显示在 ImageView 控件中 } } ``` 通过以上步骤,就可以在 Android Studio 中调用 PDA 进行拍照了。注意,在实际使用中,还可以根据具体需求对照相功能进行更加详细的配置和定制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值