Android 实现拍照以及本地储存,并可以通过 ListView 查看。
使用工具
- android studio (ver. 3.5.1)
- android(sdk 29)
- java(ver.1.8.0)
- gradle(ver. 5.4.1)
功能实现
由于使用的图片是网络图片,所以先在 AndroidManifest.xml 添加照相机权限和文件读取权限:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
调试时出现闪退应在设置中检查应用的权限。
设计一个 ListView 来浏览本地拍摄的照片。
监听拍照 button 的点击:
@Override
public void onClick(View v) {
Intent intent=new Intent();
switch (v.getId())
{
case R.id.btn_photo:
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
name=path+ df.format(new Date(System.currentTimeMillis())) +".jpg";
imagefile=new File(name);
try {
if(imagefile.exists())
{
imagefile.delete();
}
imagefile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
imageUri= FileProvider.getUriForFile(this, "com.cqjtu.fileapplication.PhotoActivity.fileprovider",imagefile);
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addCategory("android.intent.category.DEFAULT");
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, CAMER);
break;
}
}
对本地照片进行压缩显示在 ListView 中:
private Bitmap readImage(String content)
{
Bitmap pic=null;
String filepath=path+content;
pic=zoomBitmap2(filepath,250,250);
return pic;
}