`
虚幻_sky
  • 浏览: 6005 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类

android usb大容量存储时sd卡状态监听

阅读更多
  对SD卡状态监听,到现在为止我知道的有两种方式:
1.注册StorageEventListener来监听sd卡状态
  StorageEventListener中有onStorageStateChanged()方法,当sd卡状态改变时,此方法会调用,对各状态的判断一般会用到Environment类,此类中包含的有关sd卡状态的常量有:
  MEDIA_BAD_REMOVAL:表明SDCard 被卸载前己被移除
  MEDIA_CHECKING:表明对象正在磁盘检查
  MEDIA_MOUNTED:表明sd对象是存在并具有读/写权限
  MEDIA_MOUNTED_READ_ONLY:表明对象权限为只读
  MEDIA_NOFS:表明对象为空白或正在使用不受支持的文件系统
  MEDIA_REMOVED:如果不存在 SDCard 返回
  MEDIA_SHARED:如果 SDCard 未安装 ,并通过 USB 大容量存储共享 返回
  MEDIA_UNMOUNTABLE:返回 SDCard 不可被安装 如果 SDCard 是存在但不可以被安装
  MEDIA_UNMOUNTED:返回 SDCard 已卸掉如果 SDCard 是存在但是没有被安装
如:
 
public void onStorageStateChanged(String path, String oldState, String newState) {           
            if (newState.equals(Environment.MEDIA_SHARED)) {
                //大容量存储时相关操作
            } else if (newState.equals(Environment.MEDIA_CHECKING)) {
                //检查sd卡时操作
            } else if (newState.equals(Environment.MEDIA_MOUNTED)) {
                //sd在手机上可用时操作
            }...
}

 
  StorageEventListener中还有onUsbMassStorageConnectionChanged()用来监听大容量存储是否连接,我对这个方法不太了解,原来以为用来监听usb线是否拔出的,可实际在linux上好像没什么问题,但在windows上却无法用来监听usb拔出状态,也不知道是驱动有问题还是我用错了,期待高手解答。

2.通过接收Intent来监听sd卡状态
  sd卡状态改变时,MountServices会发送Intent,可以通过接收Intent来得到sd卡状态,Intent中关于sd卡状态的action有:
  MEDIA_BAD_REMOVAL_ACTION:sd卡已经从sd卡插槽拔出,但是挂载点还没解除
  MEDIA_EJECT_ACTION:用户想要移除sd卡
  MEDIA_MOUNTED_ACTION:sd卡被插入,且已经挂载
  MEDIA_REMOVED_ACTION:sd卡被移除
  MEDIA_SHARED_ACTION:sd卡作为 USB 大容量存储被共享,挂载被解除
  MEDIA_UNMOUNTED_ACTION:sd卡存在,但还没有挂载
  MEDIA_SCANNER_STARTED_ACTION:开始扫描
  MEDIA_SCANNER_FINISHED_ACTION:扫描完成


  如果只是获取当前sd卡状态,不需要对其监听,可以用方法Environment.getExternalStorageState()获得当前sd卡状态

分享到:
评论
2 楼 gf_crazy 2012-09-21  
 
1 楼 nobody2008 2011-06-15  

相关推荐

    S3专用USB大容量存储模式

    S3专用USB大容量存储模式,安装好了就能用大容量存储模式来识别储存卡了

    USB大容量存储开发板CPLD代码

    USB大容量存储(USB Mass Storage Device)是一种广泛应用于各种存储设备的技术,如U盘、移动硬盘等。在USB大容量存储开发板上,CPLD(Complex Programmable Logic Device)通常用于实现USB接口协议和数据处理逻辑。...

    android 内部存储读写 sd卡存储

    ### Android内部存储与SD卡存储详解 #### 一、Android内部存储概述 在Android开发过程中,数据存储是一项非常重要的功能。对于大多数应用来说,选择合适的数据存储方式是至关重要的。Android提供了多种数据存储的...

    Android 获取内外置存储卡

    本文将深入探讨如何在Android平台上获取内外置存储卡的相关信息,包括路径、判断其是否存在以及如何加载SD卡。 首先,我们要了解Android设备的存储结构。Android系统通常包含两种类型的存储:内部存储(Internal ...

    android平台存储容量大小更改

    在Android系统中,`sdcard`服务是负责处理外部存储(如SD卡)的主要组件。`sdcard.c`通常包含与挂载、卸载、以及管理外部存储相关的C/C++原生代码。在这个场景中,修改`sdcard.c`可能意味着对存储分区的配置进行了...

    android获取监听SD Card状态的方法

    if (newState.equals(Environment.MEDIA_SHARED)) { // SD卡作为USB大容量存储设备 // 处理SD卡被用作USB大容量存储的逻辑 } else if (newState.equals(Environment.MEDIA_REMOVED)) { // SD卡被移除 // 处理SD...

    07检查SD卡状态

    在Android系统中,SD卡(Secure Digital Memory Card)是设备扩展存储的重要部分,它用于存储用户数据、应用程序、媒体文件等。"07检查SD卡状态"这一主题聚焦于通过编程方式来检测SD卡是否可用、已挂载、剩余空间等...

    传智播客_Andorid_20天精通Android开发视频_第11天视频_视频_03_sd卡状态监听

    传智播客_Andorid_20天精通Android开发视频_第11天视频_视频_03_sd卡状态监听.avi

    android 查询存储卡剩余容量 (Environment 加 StatFs)

    在Android系统中,开发者可以通过Java API来获取存储卡(外部存储)的剩余容量信息。这里主要涉及两个关键类:`Environment`和`StatFs`。`Environment`是Android提供的一个系统类,它提供了与文件系统相关的常量和...

    android录制视频音频存储于sd卡并点击播放实例

    在Android平台上,录制视频音频并将其存储到SD卡上是一个常见的功能,这通常涉及到多媒体处理、文件操作以及用户界面交互等多个方面。以下是对这个实例的详细解析: 首先,要实现视频音频的录制,我们需要使用...

    android 读取和存储sd卡

    在Android系统中,读取和存储SD卡是应用程序与外部存储交互的重要部分,尤其是在处理大量数据或者需要离线可用内容时。本示例项目“StorageManageDemo”将帮助开发者了解如何在Android应用中有效地实现这一功能。...

    android使用usb外接摄像头拍照并保存照片

    Android提供了多种存储选项,包括内部存储、外部存储(SD卡)和应用专属目录。在保存前,可以考虑对图像进行一些基本的处理,比如调整大小、裁剪或旋转,以适应不同的使用场景。使用`MediaStore`类可以将照片添加到...

    Android开发中使用外部应用获取SD卡状态的方法

    - 当SD卡处于`MEDIA_SHARED`状态时,应用可能无法访问SD卡,因为此时SD卡被用作USB大容量存储设备。 - 在Android 6.0及以上版本,需要动态请求`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,以确保应用...

    android demo,sd卡文件存储和data下文件存储。

    在使用SD卡存储时,需要注意权限问题。自Android 6.0(API级别23)以来,应用需要在运行时请求`WRITE_EXTERNAL_STORAGE`和`READ_EXTERNAL_STORAGE`权限。 **2. data下文件存储** 内部data目录下的文件存储主要用于...

    Android TV USB路径或手机SDCARD路径获取

    在Android系统中,无论是电视设备还是手机,都有可能需要访问外部存储介质,如USB设备或手机的SD卡,以便扩展其存储容量或者进行数据交换。本文将深入探讨如何在Android TV和手机上获取SDCARD(内部或外部)以及USB...

    android 获取sd卡状态

    在Android开发中,获取外部存储(如SD卡)的状态是非常重要的功能之一,这对于确保应用程序能够正确地读写数据至关重要。本文将详细介绍如何在Android应用中实现这一功能,并深入探讨相关代码背后的逻辑。 #### 1. ...

    Android获取外置SD卡路径

    在Android系统中,由于安全和隐私的考虑,访问外部存储(即外置SD卡)的权限在不同的Android版本中有着不同的处理方式。在早期版本中,应用可以相对自由地访问外部存储,但在Android 6.0(API级别23)及更高版本中,...

    Android应用源码之判断双SD卡_CheckDoubleSDCard-IT计算机-毕业设计.zip

    在Android应用开发中,有时我们需要判断设备是否存在两个外部存储卡,即双SD卡。这个"Android应用源码之判断双SD卡_CheckDoubleSDCard"项目就是针对这一需求的一个实例。这个源码Demo可以帮助开发者理解如何在...

    基于C8051单片机的大容量SD卡存储系统的研究

    ### 基于C8051单片机的大容量SD卡存储系统的研究 #### 一、引言 自Intel推出了8051单片机以来,8位单片机经历了长时间的技术发展,在性能和速度方面都有显著提升。C8051单片机作为一款功能强大的8位微控制器,在...

Global site tag (gtag.js) - Google Analytics