当前位置: 代码迷 >> Android >> 转载 android SD卡的施用
  详细解决方案

转载 android SD卡的施用

热度:25   发布时间:2016-05-01 19:02:54.0
转载 android SD卡的应用
Andorid中SD卡的配制

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

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

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

打开cmd,我是进入到c盘根目录下,输入如下命令:mksdcard 1024M sdcard.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->Android AVD Manager ,弹出一个窗口,

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

然后点击 finish 结束。

3、向SD卡中导文件
这一步需要把模拟器运行起来。

在cmd中,命令如下:adb push test.mp3 sdcard/test.mp3

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

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


导入文件后,如果要在模拟器中访问,还需要在模拟器中的Dev tools里面Media scanner  scan 一下媒体文件。





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

MEDIA_BAD_REMOVAL_ACTION

广播:扩展介质(扩展卡)已经从 SD 卡插槽拔出,但是挂载点 (mount point) 还没解除 (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 如何存取SD Card 档案

Android对于 SD Card的位置 ,

可以用 Environment.getExternalStorageDirectory( ) 取得,

Android对于 SD Card是否插入 ,

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

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

Java代码 
public class helloWorld extends Activity {  
   
   public void onCreate(Bundle savedInstanceState) {  
      super.onCreate(savedInstanceState);  
      setContentView( R.layout.main );  
   
      Button b = (Button)this.findViewById(R.id.buttonObj);  
   
      b.setOnClickListener( new OnClickListener(){  
         public void onClick(View arg0) {  
   
            File vSDCard = null;  
   
            try {  
               // 判断SD Card 有无插入  
               if( Environment.getExternalStorageState() .equals( Environment.MEDIA_REMOVED ) )  
                  return;  
               else 
               {  
                  // 取得SD Card 位置  
                  vSDCard = Environment.getExternalStorageDirectory() ;  
               }  
   
               // 判断目录是否存在  
               File vPath = new File( vSDCard. getParent() + vSDCard. getName() + "/tom" );  
               if( !vPath.exists() )  
                  vPath.mkdirs();  
   
               // 写入档案  
               FileWriter vFile = new FileWriter( vSDCard. getParent() + vSDCard. getName() + "/tom/myTest.txt" );  
               vFile.write("Hello Android");  
               vFile.close();  
   
            } catch (Exception e) {  
               // 错误处理  
            }  
         }  
      });  
   }  


public class helloWorld extends Activity {

   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView( R.layout.main );

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

      b.setOnClickListener( new OnClickListener(){
         public void onClick(View arg0) {

            File vSDCard = null;

            try {
               // 判断SD Card 有无插入
               if( Environment.getExternalStorageState() .equals( Environment.MEDIA_REMOVED ) )
                  return;
               else
               {
                  // 取得SD Card 位置
                  vSDCard = Environment.getExternalStorageDirectory() ;
               }

               // 判断目录是否存在
               File vPath = new File( vSDCard. getParent() + vSDCard. getName() + "/tom" );
               if( !vPath.exists() )
                  vPath.mkdirs();

               // 写入档案
               FileWriter vFile = new FileWriter( vSDCard. getParent() + vSDCard. getName() + "/tom/myTest.txt" );
               vFile.write("Hello Android");
               vFile.close();

            } catch (Exception e) {
               // 错误处理
            }
         }
      });
   }
}

  相关解决方案