转载 android SD卡的应用

luoj 2011-09-30

Andorid中SD卡的配制

在Andorid开发中经常遇到与SD卡有关的调试,比如MP3文件、图片文件等。

在使用模拟器开发时,可以通过硬盘来模拟SD卡。具体做法是:

1.创建一个SD卡镜像文件

打开cmd,我是进入到c盘根目录下,输入如下命令:mksdcard1024Msdcard.img

该命令会在当前目录(我即是c盘根目录)下生成一个sdcard.img文件,该文件就是Android模拟器的SD卡镜像文件。

1024M表示1024兆,即该SD卡有1个G的容量,也可用K做单位(1M=1024K),K,M必须大写。

目前Android支持8M~128G的SD卡。

2.关联SD卡和模拟器

就是让模拟器知道它的SD卡是谁,路径是什么。

在eclipse中使用了ADT插件。eclipse->windows->AndroidAVDManager,弹出一个窗口,

在SDCard后面的框中输入:c:\sdcard.img,即是第一步创建的SD卡镜像文件的位置。先点击createavd,

然后点击finish结束。

3、向SD卡中导文件

这一步需要把模拟器运行起来。

在cmd中,命令如下:adbpushtest.mp3sdcard/test.mp3

这会将本地当前目录下的test.mp3文件拷到sdcard中,文件名不变。前一个test.mp3是本地文件的路径,sdcard是目的sd卡镜像的文件名(去掉后缀)。

4、在模拟器中使用SD卡中的文件

导入文件后,如果要在模拟器中访问,还需要在模拟器中的Devtools里面Mediascannerscan一下媒体文件。

Android插拔SD卡读取intent状态详解

MEDIA_BAD_REMOVAL_ACTION

广播:扩展介质(扩展卡)已经从SD卡插槽拔出,但是挂载点(mountpoint)还没解除(unmount)。

“android.intent.action.MEDIA_BAD_REMOVAL”

String

MEDIA_EJECT_ACTION

广播:用户想要移除扩展介质(拔掉扩展卡)。

“android.intent.action.MEDIA_EJECT”

String

MEDIA_MOUNTED_ACTION

广播:扩展介质被插入,而且已经被挂载。

“android.intent.action.MEDIA_MOUNTED”

String

MEDIA_REMOVED_ACTION

广播:扩展介质被移除。

“android.intent.action.MEDIA_REMOVED”

String

MEDIA_SCANNER_FINISHED_ACTION

广播:已经扫描完介质的一个目录。

“android.intent.action.MEDIA_SCANNER_FINISHED”

String

MEDIA_SCANNER_STARTED_ACTION

广播:开始扫描介质的一个目录。

“android.intent.action.MEDIA_SCANNER_STARTED”

String

MEDIA_SHARED_ACTION

广播:扩展介质的挂载被解除(unmount),因为它已经作为USB大容量存储被共享。

“android.intent.action.MEDIA_SHARED”

String

MEDIA_UNMOUNTED_ACTION

广播:扩展介质存在,但是还没有被挂载(mount)。

“android.intent.action.MEDIA_UNMOUNTED”

Android如何存取SDCard档案

Android对于SDCard的位置,

可以用Environment.getExternalStorageDirectory()取得,

Android对于SDCard是否插入,

可以用Environment.getExternalStorageState()判断之,

Android对于SDCard的存取权限,必须有android.permission.WRITE_EXTERNAL_STORAGE权限:

Java代码

publicclasshelloWorldextendsActivity{

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Buttonb=(Button)this.findViewById(R.id.buttonObj);

b.setOnClickListener(newOnClickListener(){

publicvoidonClick(Viewarg0){

FilevSDCard=null;

try{

//判断SDCard有无插入

if(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED))

return;

else

{

//取得SDCard位置

vSDCard=Environment.getExternalStorageDirectory();

}

//判断目录是否存在

FilevPath=newFile(vSDCard.getParent()+vSDCard.getName()+"/tom");

if(!vPath.exists())

vPath.mkdirs();

//写入档案

FileWritervFile=newFileWriter(vSDCard.getParent()+vSDCard.getName()+"/tom/myTest.txt");

vFile.write("HelloAndroid");

vFile.close();

}catch(Exceptione){

//错误处理

}

}

});

}

}

publicclasshelloWorldextendsActivity{

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Buttonb=(Button)this.findViewById(R.id.buttonObj);

b.setOnClickListener(newOnClickListener(){

publicvoidonClick(Viewarg0){

FilevSDCard=null;

try{

//判断SDCard有无插入

if(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED))

return;

else

{

//取得SDCard位置

vSDCard=Environment.getExternalStorageDirectory();

}

//判断目录是否存在

FilevPath=newFile(vSDCard.getParent()+vSDCard.getName()+"/tom");

if(!vPath.exists())

vPath.mkdirs();

//写入档案

FileWritervFile=newFileWriter(vSDCard.getParent()+vSDCard.getName()+"/tom/myTest.txt");

vFile.write("HelloAndroid");

vFile.close();

}catch(Exceptione){

//错误处理

}

}

});

}

}

相关推荐

中二病也要开发ANDROID / 0评论 2018-04-08