衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SD卡外部存儲使用方法

jf_78858299 ? 來源:程序員Android ? 作者:程序員Android ? 2023-05-26 11:32 ? 次閱讀

一、保存外部存儲需要申請權限

二、外部存儲使用案例(保存,讀取,刪除圖片)

一、 保存外部存儲需要申請權限

Android設備支持外部存儲,比如SD卡等,保存在外部存儲的數據具有全局可讀性,可供在其他設備比如電腦上閱讀,修改等。使用外部存儲需要獲取外部存儲的訪問權限

這個很重要,不然無法操作SD 卡,

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

二、外部存儲使用案例(保存,讀取,刪除圖片)

1. 實現效果

圖片

外部存儲保存圖片的方法

2. 判斷是否掛載 SD 卡方法

/**
     * 1.判斷SD卡是否掛載
     * **/
    public static boolean isMounted() {

        String state = Environment.getExternalStorageState();
        return state.equals(Environment.MEDIA_MOUNTED);

    }

SD 保存圖片,刪除圖片、顯示圖片的方法

3. 保存圖片到SD卡

保存圖片到SD卡 實現代碼如下:

// 保存圖片的方法
    public void BtnSaveImage(View view) {
        // 獲取圖片類型 bitmap
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
                R.drawable.ic_launcher);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        // 將bitmap 壓縮成byte類型 并保存到outputstream中
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
        bitmap.recycle();
        boolean saveimg = SaveImg(getApplicationContext(), "photo.png",
                baos.toByteArray());
        if (saveimg) {
            Toast.makeText(getApplicationContext(), "保存成功" + store_path,
                    Toast.LENGTH_SHORT).show();
        }
        try {
            baos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 保存圖片的方法
    public static boolean SaveImg(Context context, String filename, byte[] data) {
        // 判斷是否掛載SD卡
        if (!isMounted()) {
            Toast.makeText(context, "SD卡未安裝", Toast.LENGTH_SHORT).show();
            return false;
        }
        File dir = new File(store_path);
        // 創建文件目錄
        if (!dir.exists()) {
            dir.mkdirs();
        }
        try {
            // 向文件目錄 dir中寫文件filename
            FileOutputStream fos = new FileOutputStream(new File(dir, filename));
            fos.write(data);
            fos.close();
            return true;

        } catch (IOException e) {
            e.printStackTrace();
            Log.i("TAG", "IOException..." + e);
            return false;
        }
    }

4. 刪除圖片的方法

刪除圖片 代碼實現代碼實現如下:

public void BtnDeleteImage(View view) {
        DeletleImg(getApplicationContext(), "photo.png");

    }

    // 刪除圖片
    public static void DeletleImg(Context context, String filename) {

        File dirfile = new File(store_path + filename);
        // 判斷文件是否存在
        if (!dirfile.exists()) {
            Toast.makeText(context, "文件不存在", Toast.LENGTH_SHORT).show();
            return;
        }
        if (dirfile.isDirectory()) {
            String[] childdir = dirfile.list();
            for (int i = 0; i < childdir.length; i++) {
                new File(dirfile, childdir[i]).delete();
            }
        }
        dirfile.delete();
    }

5.讀取顯示圖片的方法

讀取顯示圖片代碼實現如下:

// 讀取圖片
    public void BtnReadImage(View view) {
        Bitmap readImg = ReadImg(getApplicationContext(), "photo.png");
        if (readImg == null) {
            Toast.makeText(getApplicationContext(), "讀取失敗" + store_path,
                    Toast.LENGTH_SHORT).show();
        } else {
            ((ImageView) findViewById(R.id.img_external))
                    .setImageBitmap(readImg);
        }

    }

    // 讀取圖片
    public static Bitmap ReadImg(Context context, String filename) {
        // 判斷是否掛載SD卡
        if (!isMounted()) {
            Toast.makeText(context, "SD卡未安裝", Toast.LENGTH_SHORT).show();
            return null;
        }
        // 獲取文件路徑下的文件名稱
        File imgFile = new File(store_path, filename);
        if (imgFile.exists()) {
            Log.i("TAG", "imgFile" + imgFile.getAbsolutePath());
            // 將路徑下的文件轉換成 bitmap
            return BitmapFactory.decodeFile(imgFile.getAbsolutePath());
        } else {
            Toast.makeText(context, "文件不存在", Toast.LENGTH_SHORT).show();
        }

        return null;
    }

6. 布局如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/img_external"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btn_external_save"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="BtnSaveImage"
        android:text="保存圖片到SD卡" />

    <Button
        android:id="@+id/btn_external_delete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="BtnDeleteImage"
        android:text="刪除SD卡 圖片" />

    <Button
        android:id="@+id/btn_external_read"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="BtnReadImage"
        android:text="顯示SD卡 圖片" />

<span class="hljs-name"LinearLayout>
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3945

    瀏覽量

    127929
  • 數據
    +關注

    關注

    8

    文章

    7139

    瀏覽量

    89576
  • SD卡
    +關注

    關注

    2

    文章

    566

    瀏覽量

    64108
收藏 人收藏

    評論

    相關推薦

    STM32CubeMx之SD驅動

    SD存儲卡(Secure Digital Memory Card)是一種基于半導體快閃存儲器的新一代高速存儲設備。SD
    的頭像 發表于 05-31 09:21 ?7304次閱讀
    STM32CubeMx之<b class='flag-5'>SD</b><b class='flag-5'>卡</b>驅動

    SDHC高容量SD存儲卡

    SDHC是“High Capacity SD Memory Card”的縮寫,即“高容量SD存儲卡”,在其中規定SDHC是符合新的規范、且容量大于2GB小于等于32GB的SD
    發表于 02-17 11:59 ?1635次閱讀

    DSC的SD存儲卡接口設計解析

    引 言 SD存儲卡(Secure Digital Memory Card)由SD聯盟(松下、東芝及美國SanDisk公司)于1999年8月共同開發研制,是一種基于半導體快閃存儲器的新一
    發表于 11-03 10:18 ?4次下載
    DSC的<b class='flag-5'>SD</b><b class='flag-5'>存儲卡</b>接口設計解析

    全新SD Express存儲卡推出 速度趕超SSD

    SD組織的展臺上, 小編發現了全新的SD Express存儲卡SD協會稱這是全新的基于第七代SD標準制造的
    發表于 07-02 09:25 ?1940次閱讀

    天嵌科技:閃存SD存儲卡16G-存儲卡

    天嵌科技:閃存SD存儲卡16G-存儲卡
    的頭像 發表于 10-16 15:47 ?1958次閱讀
    天嵌科技:閃存<b class='flag-5'>SD</b><b class='flag-5'>存儲卡</b>16G-<b class='flag-5'>存儲卡</b>

    微雪電子Micro SD 存儲模塊簡介

    Micro SD存儲模塊 支持插入TI 支持SDIO及SPI接口 接口規格為PIN間距2.54mm排針 型號 Micro SD St
    的頭像 發表于 11-12 16:41 ?2993次閱讀
    微雪電子Micro <b class='flag-5'>SD</b><b class='flag-5'>卡</b> <b class='flag-5'>存儲</b>模塊簡介

    微雪電子SD存儲模塊簡介

    TF擴展模塊 SD存儲模塊 支持SDIO及SPI接口 支持Micro SD Card及SD
    的頭像 發表于 12-30 09:30 ?1784次閱讀
    微雪電子<b class='flag-5'>SD</b><b class='flag-5'>卡</b><b class='flag-5'>存儲</b>模塊簡介

    SD讀寫測試程序

    電子儀器理想的外部存儲介質。SD 支持兩種總線方式:SD 方式與 SPI 方式。其中 SD
    發表于 12-31 19:22 ?17次下載
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>讀寫測試程序

    STM32G0開發筆記:SD模塊的使用方法

    使用Platformio平臺的libopencm3開發框架來開發STM32G0,下面介紹SD模塊的使用方法
    的頭像 發表于 01-19 16:27 ?2453次閱讀
    STM32G0開發筆記:<b class='flag-5'>SD</b><b class='flag-5'>卡</b>模塊的<b class='flag-5'>使用方法</b>

    SD(HC)-存儲卡和MMC接口調理-AN10911

    SD(HC)-存儲卡和MMC接口調理-AN10911
    發表于 02-16 20:50 ?0次下載
    <b class='flag-5'>SD</b>(HC)-<b class='flag-5'>存儲卡</b>和MMC接口調理-AN10911

    S7-1500存儲卡使用方法

    SD的讀寫,類似于普通SD,但是不能用windows格式化
    的頭像 發表于 04-20 09:48 ?8166次閱讀

    SD/micro SD存儲卡介紹

    SD有不少規范,常用包含存儲空間和存儲速度兩種,廠商會把滿足的規范的圖標印在卡面上,所以通過上有的規格,就能很快判斷出這張
    的頭像 發表于 07-18 10:39 ?2027次閱讀

    SD與Flash存儲究竟存在哪些差異?

    SD 是基于閃存技術的一種可移動存儲卡,由 SD 協會進行開發并標準化,在數碼相機、智能手機、平板電腦等設備中廣泛采用。SD
    的頭像 發表于 06-05 15:54 ?1961次閱讀
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>與Flash<b class='flag-5'>存儲</b>究竟存在哪些差異?

    貼片式SD功能介紹【MK SD NAND】

    SDNAND,通常稱為嵌入式SD、貼片式TFSD Flash、直接貼裝SD、貼裝
    的頭像 發表于 07-05 17:03 ?922次閱讀
    貼片式<b class='flag-5'>SD</b><b class='flag-5'>卡</b>功能介紹【MK <b class='flag-5'>SD</b> NAND】

    mmc使用方法 mmcsd的區別

    MMC使用方法 MMC(MultiMediaCard)是一種廣泛使用的小型存儲卡,主要用于手機、數碼相機等便攜式設備。以下是MMC
    的頭像 發表于 11-25 09:51 ?527次閱讀
    百家乐官网电脑赌博| 百家乐官网视频游戏聊天| 百家乐官网黑牌靴| 迷你百家乐官网的玩法技巧和规则| 百家乐视频游戏盗号| 澳门玩百家乐00| 百家乐怎样赢| 狮威百家乐官网娱乐平台| 百家乐视频游戏帐号| 太阳城巧克力社区怎么样| 汝南县| 百家乐官网网上真钱娱乐场开户注册 | 24山风水四大局| 威尼斯人娱乐城图| 百家乐官网赢得秘诀| 做生意摆放龙龟方向| 威尼斯人娱乐城送38| 开阳县| 足球百家乐官网投注网出租 | 山丹县| 有钱人百家乐官网的玩法技巧和规则 | 修水县| 做生意门口对着通道| 百家乐官网双峰县| 裕昌太阳城户型图| 百家乐官网视频游戏聊天| 定制百家乐桌垫| 老虎机 | 做生意的风水摆件| 云鼎娱乐场送彩金| 网上百家乐官网游戏哪家信誉度最好| 大发888娱乐城官方网站lm0| 百家乐官网平注常赢法| 菲律宾百家乐娱乐平台| 边坝县| 玩百家乐678娱乐城| 澳门金沙娱乐场| 百家乐百家乐伴侣| 博讯网| 凯旋门百家乐官网现金网| 百家乐无损打法|