Android : 相机及本地储存

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"/>

调试时出现闪退应在设置中检查应用的权限。

pc1

设计一个 ListView 来浏览本地拍摄的照片。

pic2

监听拍照 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;
    }

演示

pic3pic4

代码下载地址

FileApplication

posted @ 2020-01-18 14:27  别依梦雨轩  阅读(422)  评论(0编辑  收藏  举报