欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

適配AndroidQ拍照和讀取相冊(cè)圖片的實(shí)現(xiàn)方法

 更新時(shí)間:2020年06月23日 10:49:30   作者:azhoup  
這篇文章主要介紹了適配AndroidQ拍照和讀取相冊(cè)圖片的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Google發(fā)行Android Q版本也有很長(zhǎng)一段時(shí)間了,華為應(yīng)用市場(chǎng)已經(jīng)要求要適配Android Q版本了,所以,我們也要去對(duì)Android Q進(jìn)行適配。

先講一下咱們這節(jié)用到的新特性

  • Android Q文件存儲(chǔ)機(jī)制修改成了沙盒模式,類(lèi)似于iOS
  • 應(yīng)用只能訪問(wèn)自己沙盒下的文件和公共媒體文件

如果有想具體了解Android Q新版特效的可以去 官方文檔
我們?cè)谶@個(gè)地方記錄一下Android Q版本進(jìn)行拍照保存到相冊(cè)的功能。

權(quán)限問(wèn)題

Android Q不再需要申請(qǐng)文件讀寫(xiě)權(quán)限,默認(rèn)可以讀寫(xiě)自己沙盒文件和公共媒體文件。因?yàn)橄鄡?cè)屬于公共媒體文件,所以,Android Q 可以不用 再動(dòng)態(tài)申請(qǐng)權(quán)限。但是Android Q以下版本必須要申請(qǐng)權(quán)限才可以訪問(wèn)。

拍照

圖片正常保存

拍照:Android Q之前版本使用的,將圖片保存到指定文件夾,拍照完成后需要通知相冊(cè)刷新

拍照代碼

// 拍照存放路徑
    File fileDir = new File(Environment.getExternalStorageDirectory(), "Pictures");
    if (!fileDir.exists()) {
      fileDir.mkdir();
    }

 //圖片名稱(chēng)
    String fileName = "/IMG_" + System.currentTimeMillis() + ".jpg";
    //跳轉(zhuǎn)到相機(jī)
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    Uri uri;
    //適配Android N之后版本
    if (Build.VERSION.SDK_INT >= 24) {
      uri = FileProvider.getUriForFile(this, ImagePickerProvider.getFileProviderName(this), new File(mFilePath));
    } else {
    //適配Android N版本之前
      uri = Uri.fromFile(new File(mFilePath));
    }
    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    //跳轉(zhuǎn),需要在onActivityResult進(jìn)行處理
    startActivityForResult(intent, 1111);

刷新相冊(cè)代碼

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + mFilePath)));

以上就是Android Q之前版本通用的拍照代碼,有需要的可以直接復(fù)制就行

將圖片保存到沙盒內(nèi)

  • 沙盒里面操作文件不再需要申請(qǐng)權(quán)限
  • 沙盒中新建文件夾只能再系統(tǒng)指定的子文件夾中新建

Android Q版本使用,將圖片存放到沙盒文件內(nèi),圖庫(kù)無(wú)法刷新,無(wú)法顯示

// 獲取圖片沙盒文件夾
    File PICTURES = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    //圖片名稱(chēng)
    mFileName = "IMG_" + System.currentTimeMillis() + ".jpg";
    //圖片路徑
    mFilePath = PICTURES.getAbsolutePath()+"/"+mFileName;
    //跳轉(zhuǎn)到相機(jī)
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    Uri uri;
    if (Build.VERSION.SDK_INT >= 24) {
      uri = FileProvider.getUriForFile(this, ImagePickerProvider.getFileProviderName(this), new File(mFilePath));
    } else {
      uri = Uri.fromFile(new File(mFilePath));
    }
    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    startActivityForResult(intent, 1111);

 這個(gè)不用調(diào)用代碼刷新相冊(cè)庫(kù),因?yàn)樗⑿铝艘膊荒茱@示😁

仔細(xì)對(duì)比一下發(fā)現(xiàn)這兩種基本上沒(méi)有什么差別,只有文件存放路徑不同,因?yàn)樵贏ndroid Q新版本上對(duì)存儲(chǔ)做出了改變。

將圖片保存到公共文件夾

  //-------------------------
    //拍照存放路徑
    //為了適配Android Q版本以下
    File fileDir = new File(Environment.getExternalStorageDirectory(), "Pictures");
    if (!fileDir.exists()) {
      fileDir.mkdir();
    }

    String fileName = "/IMG_" + System.currentTimeMillis() + ".jpg";
    //--------------------------
    //--------------------------
    //設(shè)置參數(shù)
    Uri uri = null;
// 設(shè)置保存參數(shù)到ContentValues中
    ContentValues contentValues = new ContentValues();
    //設(shè)置文件名
    contentValues.put(MediaStore.Images.Media.DISPLAY_NAME, fileName);
    //兼容Android Q和以下版本
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
      //android Q中不再使用DATA字段,而用RELATIVE_PATH代替
      //RELATIVE_PATH是相對(duì)路徑不是絕對(duì)路徑
      //DCIM是系統(tǒng)文件夾,關(guān)于系統(tǒng)文件夾可以到系統(tǒng)自帶的文件管理器中查看,不可以寫(xiě)沒(méi)存在的名字
      contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, "DCIM/Pictures");
    } else {
    //Android Q以下版本
      contentValues.put(MediaStore.Images.Media.DATA, mFilePath);
    }
    //設(shè)置文件類(lèi)型
    contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/JPEG");
    //執(zhí)行insert操作,向系統(tǒng)文件夾中添加文件
    //EXTERNAL_CONTENT_URI代表外部存儲(chǔ)器,該值不變
    uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
//    若生成了uri,則表示該文件添加成功
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    startActivityForResult(intent, 1111);

使用這段代碼也不用刷新相冊(cè)庫(kù),會(huì)自動(dòng)刷新。
存到公共文件的操作,相對(duì)來(lái)說(shuō)麻煩點(diǎn),但是也還好。

到此這篇關(guān)于適配AndroidQ拍照和讀取相冊(cè)圖片的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)AndroidQ拍照和讀取相冊(cè)圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何利用Kotlin實(shí)現(xiàn)極簡(jiǎn)回調(diào)

    如何利用Kotlin實(shí)現(xiàn)極簡(jiǎn)回調(diào)

    這篇文章主要給大家介紹了關(guān)于如何利用Kotlin實(shí)現(xiàn)極簡(jiǎn)回調(diào)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 彈出一個(gè)帶確認(rèn)和取消的dialog實(shí)例

    彈出一個(gè)帶確認(rèn)和取消的dialog實(shí)例

    下面小編就為大家?guī)?lái)一篇彈出一個(gè)帶確認(rèn)和取消的dialog實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 詳解Android UI更新的幾種方法

    詳解Android UI更新的幾種方法

    本篇文章主要介紹了Android UI更新的幾種方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Flutter路由的跳轉(zhuǎn)、動(dòng)畫(huà)和傳參詳解(最簡(jiǎn)單)

    Flutter路由的跳轉(zhuǎn)、動(dòng)畫(huà)和傳參詳解(最簡(jiǎn)單)

    這篇文章主要給大家介紹了關(guān)于Flutter路由的跳轉(zhuǎn)、動(dòng)畫(huà)和傳參的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Android切圓角的幾種常見(jiàn)方式總結(jié)

    Android切圓角的幾種常見(jiàn)方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于Android切圓角的常見(jiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位Android開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Android App仿QQ制作Material Design風(fēng)格沉浸式狀態(tài)欄

    Android App仿QQ制作Material Design風(fēng)格沉浸式狀態(tài)欄

    這篇文章主要介紹了Android App仿QQ制作Material Design風(fēng)格沉浸式狀態(tài)欄的實(shí)例,同時(shí)也給出了4.4版本下實(shí)現(xiàn)效果與5.0的對(duì)比,需要的朋友可以參考下
    2016-04-04
  • 安卓(Android)聊天機(jī)器人實(shí)現(xiàn)代碼分享

    安卓(Android)聊天機(jī)器人實(shí)現(xiàn)代碼分享

    這是一個(gè)安卓智能聊天機(jī)器人的源碼,采用了仿微信的風(fēng)格設(shè)計(jì),調(diào)用的是圖靈機(jī)器人的API,能夠?qū)崿F(xiàn)智能聊天、講故事、講笑話、查天氣、查公交等豐富的功能
    2015-11-11
  • Android自定義錄制視頻功能

    Android自定義錄制視頻功能

    這篇文章主要為大家詳細(xì)介紹了Android自定義錄制視頻功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android自定義View弧線進(jìn)度控件

    Android自定義View弧線進(jìn)度控件

    這篇文章主要為大家詳細(xì)介紹了Android自定義View弧線進(jìn)度控件,點(diǎn)擊開(kāi)始按鈕時(shí),逐漸的出現(xiàn)進(jìn)度,感興趣的小伙伴們可以參考一下
    2016-07-07
  • RecyclerView實(shí)現(xiàn)水波紋點(diǎn)擊效果

    RecyclerView實(shí)現(xiàn)水波紋點(diǎn)擊效果

    這篇文章主要為大家詳細(xì)介紹了RecyclerView實(shí)現(xiàn)水波紋點(diǎn)擊效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評(píng)論