各位大虾:怎样虚拟android中模拟器的SD卡?
        然后怎样把数据文件导入卡中?

解决方案 »

  1.   

    1.建模拟器的时候可以选,启动模拟器的时候也可以
    2.可以用push命令, 也可以用DDMS
      

  2.   

    同时还要注意,模拟SD卡的大小不能超过2GB。创建磁盘镜像你可以用SDK中的mksdcard工具来创建可以在模拟器启动时加载的FAT32磁盘镜像。你可以在SDK的 tools/目录下找到mksdcard,用下面的命令船检磁盘镜像:mksdcard <size> <file>
    拷贝文件到磁盘镜像
    一旦你创建了一个磁盘镜像,你就可以在模拟器加载它之前拷贝文件到镜像中。要拷贝文件,你可以 将镜像加载为循环设备然后向里面拷贝文件,或者你可以使用mtools工具包中的mcopy直接将文件拷贝到 镜像中。mtools包在Linux、Mac和Windows下均可用。在模拟器启动时加载磁盘镜像要想在模拟器中加载FAT32格式的磁盘,启动模拟器时带上-sdcard标记并指定镜像的名 称和路径(相对于当前工作目录):emulator -sdcard <filepath>
    mksdcard工具是用来创建虚拟的SD卡映像的,它创建SD卡是FAT32格式。创建好的SD卡映像可以被载入模拟器,如同使用一个真正的SD设备。下面是它的用法:   mksdcard [-l label] <size>[K|M] <file>
    下面的表格列出了mksdcard所有的选项和参数参数 注释
    -l 为SD卡创建一个卷标。
    size 用一个整数来设定SD卡的大小。缺省单位是byte,可以使用大写的”K”和”M”跟在数值后面改变这个单位,如 1048576K, 1024M(xing:有网友建议不要设置得太小,不然模拟器可能会崩溃。而且命令有提示,模拟器不能用8M的卡。我现在用32M没有任何问题。要注意一点,一旦生成映像,所有的空间都会被分配,就是说如果你使用了1024M作为参数,你的硬盘上就会出现一个1G的文件。)
    file 映像的文件名。比如sdcard.img。
       例:mksdcard -l mycard 32M mycard.img
    创建了SD映像之后就可以在模拟器的启动参数里面加入-sdcard来载入它。更多信息参见[Android Emulator].   emulator -sdcard <file>
    (xing:文件名最好使用全路径,尤其是在eclipse里面,理论上将sdca
      

  3.   

    附:如何将文件放到SD卡中如果你使用eclipse,那就再简单不过了。首先在run dialog里面为emulator增加启动参数-sdcard <file>,模拟器启动后,在ddms里面就可以看到sdcard这个目录了,然后使用文件传送按钮就可以把文件传到SD卡中。使用命令行也不麻烦,首先还是要有启动参数,然后使用  adb push <local> <remote>
    就可以将本地文件发送到模拟器,例如: adb push temp.img /sdcard/audio
      

  4.   

    在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件)。创建SDCard可以在Eclipse创建模拟器时随同创建,也可以使用DOS命令进行创建,如下:
    在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令创建一张容量为2G的SDCard,文件后缀可以随便取,建议使用.img:
    mksdcard 2048M D:\AndroidTool\sdcard.img在程序中访问SDCard,你需要申请访问SDCard的权限。
    在AndroidManifest.xml中加入访问SDCard的权限如下:
    <!-- 在SDCard中创建与删除文件权限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <!-- 往SDCard写入数据权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。
    注意:访问SDCard必须在AndroidManifest.xml中加入访问SDCard的权限
    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
             File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
             File saveFile = new File(sdCardDir, “android.txt”);
    FileOutputStream outStream = new FileOutputStream(saveFile);
    outStream.write("安桌".getBytes());
    outStream.close();
    }
    Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。
    Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写:
    File sdCardDir = new File("/sdcard"); //获取SDCard目录
    File saveFile = new File(sdCardDir, "android.txt"); 
    //上面两句代码可以合成一句: File saveFile = new File("/sdcard/android.txt");
    FileOutputStream outStream = new FileOutputStream(saveFile);
    outStream.write("安桌test".getBytes());
    outStream.close();