sd卡

android获取外置sd卡路径

筅森魡賤 提交于 2019-12-05 17:42:24
对于获取android的外置sd卡路径纠结了好长时间,可能是我的境界还不够吧,找到了方法却不知道是什么意思,只知道是使用StorageManager,我先把获取方法贴出来,最近好好研究一下StorageManager这个类,研究完了再来补充,下面是方法: public String [] getStoragePath() { try { StorageManager sm = (StorageManager) getSystemService(STORAGE_SERVICE); Method getVolumePathsMethod = StorageManager.class.getMethod( "getVolumePaths" , (Class<?>[]) null ); String [] paths = ( String []) getVolumePathsMethod.invoke(sm, ( Object []) null ); return paths; } catch (Exception e) { Log.e( "info" , "getStoragePath() failed" , e); } return null ; } 这个方法获取的是所有可用存储的路径,其中path[0]是内置存储路径,path[1]是外置存储路径。 补充

Android获取拓展外置SD卡(可插拔)路径及读写外置SD卡的方法

倖福魔咒の 提交于 2019-12-05 17:41:51
有需求做一些类似文件管理器的,就会用到获取外置可移动SD卡的路径。一般的通过Environment或者Context获取的都是手机自带的存储卡路径,类似storage/emulated/0/加后缀。由于谷歌之后的意思是像ios一样,不支持外置USB或者外置可移动SD存储。但是国内的厂商一般都支持。先大概分个类,6.0以下的使用方法一,6.0以上的使用方法二。 方法一 1.遍历env的key里面有SECOENDARY_STORAGE这个值,代表是第二储存,即为外置可移动SD卡。EXTERNAL_STORAGE则对应的是手机内部的存储。在华为荣耀6(4.4)上测试的结果是: 外置 storage/sdcard1 , 内置 storage/emulated/0 。自测了一下,String inpath= System.getenv(“EXTERNAL_STORAGE”)获取内置sd卡,和系统的 Environment.getExternalStorageDirectory().getAbsolutePath()获取的结果是一样的 private static void initSDCardPath() { try { if(TextUtils.isEmpty(exterPath) && TextUtils.isEmpty(innerPath)){ Map<String, String>

Android6.0如何判断有无外置SD卡(TF卡),并读写

房东的猫 提交于 2019-12-05 17:41:34
  安卓6.0已经发布一段时间了,不过安卓6.0的新特性仍在发掘中。现在,又有一个有趣的新特性被发现了——安卓6.0可以把microSD卡也就是TF卡,作为设备的内置存储使用。这个新特性之所以被发现得晚,大概是由于能够率先升级安卓6.0的Nexus设备不支持TF卡扩展吧。 在之前,安卓系统虽然可以支持TF卡扩展,但TF卡扩展的容量只能当成外置存储。虽然用户可以把照片、音乐等内容放进去,但App不能安装到其中。在安卓6.0中,当首次插入TF卡的时候,系统会询问会将TF卡作为外置还是内置储存。如果选择作为内置存储,系统则会对TF卡格式化并加密——注意,这会丢失数据!然后,TF卡的容量就和设备的内置存储融合了。   一般来说,设备的内置存储速度会比TF卡快上不少,稳定性也更高,因此如果不是容量特别紧张,并不建议把TF当成内置储存植入。同时,市面上支持TF卡扩展的安卓设备也越来越少,安卓6.0的这个新特性也许会遭到冷遇。 Android手机上的外置SD卡,起初的时候,即在Android出世的前几年,那时手机的存储是十分有限的,不像现在到处可见16G、32G和64G的存储,因而那时候的手机有的厂商允许插入外置的SD卡,此时这张卡仍处于手机的扩展部分。后来,随着手机的发展以及存储能力的增加,这张外置SD卡,逐渐成为了手机的一部分,不再允许可插拔了,当然现在依然有的手机允许对存储进行拓展

解决将zip文件不慎写入sd(tf)卡中

╄→尐↘猪︶ㄣ 提交于 2019-12-04 14:27:19
之前折腾树莓派时,不小心用Win32DiskImager把zip文件当作img写入tf卡中,之后便出现许多问题,电脑无法识别tf卡,找不到盘符,寻找许多格式化工具,恢复工具均失败,之后无意间接触到diskpart这个分区工具,便试了一下,结果竟然成功恢复了. 参考博客 按照他的步骤走到第七步格式化时,报错没有选择盘符,之后尝试寻找答案,没有找到,不够这个是否已经能够读取盘符了,于是利用sdformat工具直接将其格式化,再重新插拔,便恢复了. sd格式化工具 猜测是写入时,把tf卡分成了几个分区 来源: https://www.cnblogs.com/just-save/p/11870181.html

Android获取SD卡存储空间

♀尐吖头ヾ 提交于 2019-12-03 22:46:30
前言 有获取外部SD卡存储空间的需求,但是某度出来的方法都千篇一律采用Environment类的getExternalStorageDirectory方法,但是此方法Deprecated。所以只能用其他方式。 1.StorageManager 获取StorageManager的实例 storageManager = (StorageManager)mContext.getSystemService(mContext.STORAGE_SERVICE); 2.获取存储卡路径 private String[] getExtSDCardPath() { Log.d("SDRemount ","getExtSDCardPath"); try { Class<?>[] paramClasses = {}; Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths", paramClasses); getVolumePathsMethod.setAccessible(true); Object[] params = {}; Object invoke = getVolumePathsMethod.invoke(storageManager, params); return (String[]

STM32笔记--SDIO(SD卡读取)

匿名 (未验证) 提交于 2019-12-03 00:30:01
学习这里首先要了解一下SD卡基本资料: SD卡的协议部分太多,也比较复杂,建议资料:《Simplified_Physical_Layer_Spec.pdf》其主要复杂在繁多的命令,一共有64个命令,各个命令代表什么可查资料。 关于这里大部分都是熟悉函数然后直接调用库就行,但还是需要每个函数都去读一下的,后面会有具体函数的使用实例,到时候再补充。 我们代码中一般用到的是ARM官方给的SD卡的库,但是库中存在问题,SD_Error SD_ReadBlock()缺少代码:(有标注,可直接替换) SD_Error SD_ReadBlock(uint8_t *readbuff, uint32_t ReadAddr, uint16_t BlockSize) { SD_Error errorstatus = SD_OK; #if defined (SD_POLLING_MODE) uint32_t count = 0, *tempbuff = (uint32_t *)readbuff; #endif TransferError = SD_OK; TransferEnd = 0; //传输结束标置位,在中断服务置1 StopCondition = 0; //怎么用的? SDIO->DCTRL = 0x0; if (CardType == SDIO_HIGH_CAPACITY_SD_CARD) {

zynq7000 SD卡的读写

匿名 (未验证) 提交于 2019-12-03 00:25:02
参考博客: https://blog.csdn.net/husipeng86/article/details/52262070 参考上述博客中的程序,报错:ERROR : f_write returned 1写失败,又参考了以下博客: https://blog.csdn.net/fanwenjieok/article/details/37693625 程序如下: #include <string.h> #include "platform.h" #include "xparameters.h" #include "xil_printf.h" #include "ff.h" #include "xdevcfg.h" static FATFS fatfs; int SD_Init() { FRESULT rc; rc = f_mount(&fatfs,"",0); if(rc) { xil_printf("ERROR : f_mount returned %d\r\n",rc); return XST_FAILURE; } return XST_SUCCESS; } int SD_Transfer_read(char *FileName,u32 DestinationAddress,u32 ByteLength) { FIL fil; FRESULT rc; UINT br; rc =

获取Android系统所有内置SD卡以及外置SD卡路径

匿名 (未验证) 提交于 2019-12-03 00:22:01
/** * 获取外置SD卡路径 * */ public String[] getExtSDCardPath() { StorageManager storageManager = (StorageManager) getActivity().getSystemService(Context .STORAGE_SERVICE); try { Class<?>[] paramClasses = {}; Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths", paramClasses); getVolumePathsMethod.setAccessible(true); Object[] params = {}; Object invoke = getVolumePathsMethod.invoke(storageManager, params); return (String[])invoke; } catch (NoSuchMethodException e1) { e1.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch

Android开发:Environment类(外部存储状态及路径获取)的接口详解(转载)

匿名 (未验证) 提交于 2019-12-03 00:19:01
转载自:https://blog.csdn.net/daniel80110_1020/article/details/55504833 Android 应用开发中,常使用Environment类去获取外部存储目录,在访问外部存储之前一定要先判断外部存储是否已经是可使用(已挂载&可使用)状态,并且需要在AndroidManifest.xml文件中添加外部存储读和写的权限。 Environment类中提供了几个静态常量用于标识外部存储的状态,这些状态都是String类型 MEDIA_BAD_REMOVAL 在没有挂载前存储媒体已经被移除。 MEDIA_CHECKING 正在检查存储媒体。 MEDIA_MOUNTED 存储媒体已经挂载,并且挂载点可读/写。 MEDIA_MOUNTED_READ_ONLY 存储媒体已经挂载,挂载点只读。 MEDIA_NOFS 存储媒体是空白或是不支持的文件 ϵͳ 。 MEDIA_REMOVED 存储媒体被移除。 MEDIA_SHARED 存储媒体正在通过USB共享。 MEDIA_UNMOUNTABLE 存储媒体无法挂载。 MEDIA_UNMOUNTED 存储媒体没有挂载。 可以通过静态方法getExternalStorageState()来获取外部存储的状态,如果程序需要在外部存储里面读写数据,必须要先判断: if(Environment.MEDIA

stm32驱动sd卡问题记录

匿名 (未验证) 提交于 2019-12-02 23:36:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011123091/article/details/90727146 问题记录:将程序从51单片机移植到stm32以后就一直出现一个问题,单片机不能以很高的速度驱动sd卡,导致数据采集的速度一直跟不上。但是在测试的过程中发现程序在debug下是可以正常驱动的,试图通过对比正常启动驱动和在debug下的区别来发现原因。发现debug下单片机的复位是通过软件复位来完成的,硬件直接启动通过外部的阻容复位。后来就一直纠结硬件的复位问题,后来又发现启动后通过手动复位sd卡驱动正常,所以更坚定是硬件问题了。后来在网上查询可以也猜测是外部的外设没复位弯成单片机就对其初始化,所以导致初始化不成功。所以后来通过在main函数最开始的地方加延时来解决,发现依然是不能高速驱动!!!!!!!!,最后想通过外加看门狗加一个长时间的复位来解决。 -----------------------------------------------------时间分割线-------------------- 由于手头有其他事要忙,所以这个问题搁置了一个月。。。直到今天,我不忙了。。 在忙的一个月期间,也没有修改硬件电路打板。。今天有冷静了下来看了看sd卡的驱动流程。 发现网上说在初始化阶段要以低速,初始化以后转换为高速