第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Android 相機(jī)調(diào)用簡(jiǎn)化工具

標(biāo)簽:
Android

调用安卓相机的代码稍微有点复杂,我将其进行了包装,简化调用的过程。
这个包装类能实现:调用相机、修改尺寸、获得位图 这三个基本功能。


由于涉及到向SD卡中写数据的操作,因此需要在 AndroidManifest.xml 中声明权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

创建一个 TakePhoto 类,代码如下:

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TakePhoto {

    private String imagePath;
    private String imageName;
    private Uri imageUri;

    public TakePhoto() {
        //默认保存在SD卡根目录
        imagePath = Environment.getExternalStorageDirectory().toString();
        imageName = "output_image.jpg";
    }

    public TakePhoto(String imagePath, String imageName) {
        //自定义路径及文件名
        this.imagePath = imagePath;
        this.imageName = imageName;
    }

    //调用相机
    public Uri invokeCamera(Context context) {
        createUri();
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
        //启动相机程序
        context.startActivity(intent);
        return imageUri;
    }

    //裁剪相片
    public Uri editPicture(Context context) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(imageUri, "image/*");
        intent.putExtra("scale", true);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
        //启动裁剪程序
        context.startActivity(intent);
        return imageUri;
    }

    //生成Uri对象
    private void createUri() {
        File outputImage = new File(imagePath, imageName);
        try {
            //生成空白文件
            if (outputImage.exists()) {
                outputImage.delete();
            }
            outputImage.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        imageUri = Uri.fromFile(outputImage);
    }

    //得到Bitmap对象
    public Bitmap getBitmap(Context context) {
        try {
            return BitmapFactory.decodeStream(context.getContentResolver().openInputStream(imageUri));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
}

最后在 Activity 中测试,核心代码如下:

    class OnClick implements View.OnClickListener {
        TakePhoto takePhoto = new TakePhoto();

        @Override
        public void onClick(View v) {

            switch (v.getId()) {
                case R.id.btn1:
                    //调用相机
                    takePhoto.invokeCamera(MyActivity.this);
                    break;
                case R.id.btn2:
                    //修改尺寸
                    takePhoto.editPicture(MyActivity.this);
                    break;
                case R.id.btn3:
                    //获得图片
                    Bitmap bitmap = takePhoto.getBitmap(MyActivity.this);
                    imageView.setImageBitmap(bitmap);
                    break;
                default:
                    break;
            }
        }
    }

运行截图:
调用相机

裁剪图片

显示位图

點(diǎn)擊查看更多內(nèi)容
5人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消