上传图片到模拟器相册。

38

我希望在模拟器的相册中添加图片,但是我无法实现。如何做到呢?有什么线索!虽然我已经查看了Stack Overflow上发布的一个答案,但没有成功。

9个回答

47

检查this。一旦在模拟器中有了虚拟SD卡,如果您不熟悉mtools或者不知道如何在Linux上挂载回环设备(顺便说一下,这很容易),只需使用adb push上传您的图像。可能的示例:

adb shell mkdir /sdcard/Pictures
adb push mypic.jpg /sdcard/Pictures

4
我在/sdcard/photos创建目录失败,只读文件系统。 - Pratik Butani
2
你可能需要设置写入权限。adb shell,mount -o rw,remount rootfs /,chmod 777 /mnt/sdcard,exit,然后尝试复制图像adb push mypic.jpg /sdcard/Pictures。 - Amalka

45

你还可以使用Eclipse中的DDMS工具将文件推送或拉取到模拟器上。在2.2模拟器上,我使用DDMS成功将一些.jpg图像推送到/mnt/sdcard/DCIM/100ANDRO文件夹中。然后,我必须进入正在运行的模拟器本身,在应用程序屏幕中选择“开发工具”,然后选择“媒体扫描器”(在较新版本的Android中选择“媒体提供程序”),以使模拟器能够识别这些文件,从而在媒体库中显示它们。


11
运行媒体扫描器是必要的。如果不执行此步骤,我的模拟器就无法看到图像。回答很棒! - Eric Burke
2
即使媒体提供者不工作,它也不会刷新图库。 - Akhil Jain
4
我也找不到它(Lollipop)。您可以使用以下命令从adb shell运行:am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///mnt/sdcard/DCIM/100ANDRO/。 - Ben Groot
@BenGroot,我的adb shell无法识别“am”作为有效命令。我需要安装另一个程序来处理这个问题吗? - airowe
@Zenadix - 没有“媒体提供者”吗?我的媒体提供者在按下“扫描SD卡”时崩溃了 :-( - jhm
显示剩余3条评论

20

首先要做的是获取模拟器存储中的图像。您有几个选项可供选择。我将在此列出最常见的选项。但首先,对于需要在模拟器上扫描此媒体的需求,需要注意一个重要问题,正如Felby在另一个答案中指出的那样。

图片放置的位置

到目前为止,我测试过的设备上,从相机中获取的图像的标准位置是/mnt/sdcard/DCIM/100ANDRO

然而,由于我们无论如何都需要手动扫描,因此您可以将它们放在/mnt/sdcard/Pictures或(emulated) sdcard上的任何其他有效路径中。

/sdcard / 路径链接到/mnt/sdcard/,因此也可以使用该路径。我只是提到了这一点,因为我在另一个答案中看到了这个路径。

如何将图像上传到模拟器

使用adb

对于高级用户,可以从命令行执行adb push。如果您不知道如何使用adb,我建议您阅读此帮助文章。确保您的系统路径设置正确,并且adb devices返回至少一个设备(如果有多个,请在命令中指定设备)。

adb push /path/to/image.jpg /mnt/sdcard/DCIM/100ANDRO

使用Eclipse(ADT)

您可以通过在ADT中点击一些按钮来实现相同的功能。进入DDMS透视图,在文件浏览器中选择顶部的图标。有关详细信息,请参阅下面的图片。

enter image description here

图片链接自http://cdn.cybersectors.com/

扫描媒体文件

一个重要的步骤是在Android模拟器上执行此工具,否则图库将保持为空。非常感谢Felby指出这一点。

然后我必须进入正在运行的模拟器本身,从应用程序屏幕中选择“Dev Tools”,然后选择“Media Scanner”(或在新版Android中选择“Media Provider”)以使模拟器识别文件,以便它们在媒体图库中显示。


3
使用Genymotion,我只需要在推送镜像后重启模拟器 - 它就成功了! - dinony
我使用了 /mnt/sdcard/pictures 并重新启动了模拟器,现在已经修复了。谢谢! - lynndragon
我选择了媒体提供商,接下来该怎么做? - user4050065
1
媒体提供者的“扫描SD卡”导致“Dev工具已停止工作”。有什么解决办法吗? - b.g

4
如果您需要图片,只需在模拟器的浏览器中打开google.com,并根据您的喜好搜索图片,然后点击图片。当图片打开后,选择“全尺寸”选项,然后按住鼠标几秒钟,这将给您提供保存选项。您也可以在上下文菜单中搜索这些选项。
希望这能帮到某些人。

3
我可以通过以下方式将图像放入我的SD卡中:
  1. 从USB上断开手机连接

  2. 使用 adb push 命令行,使用文件夹 storage/sdcard 而不是 /sdcard ,例如:

    D:\adt-bundle-windows-x86-20131030\sdk\platform-tools>adb push "d:\star.jpg" storage/sdcard

  3. 关闭模拟器并重新运行

  4. 我在 Eclipse -> DDMS -> File Explorer 选项卡中检查,发现图像在 storage/sdcard 文件夹中


1

如果仍然感到困扰,以下是一些说明:

  1. 使用 adb 将文件复制到模拟器中
adb push MyPictures/* /sdcard/Pictures
  • 重新启动设备,这将让Android检查系统中是否有新的媒体文件
  • adb reboot
    

    然后文件应该会出现!重新启动非常烦人,但这是我能找到的最可靠的方法。

    注意:

    这些脚本旨在刷新媒体库,但我无法使其正常工作:

    adb shell "am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/Pictures/"
    

    1
    我认为你应该在文件夹下的每个文件上运行此广播命令,该命令不会递归处理文件。 - DavidDr90

    1
    扫描媒体可能会导致开发者工具停止运行。如果出现这种情况,请使用上面图片中提到的DDMS模式将文件推送到storage/sdcard/DCIM文件夹中,然后重新启动模拟器。

    1
    我用过这个命令,对我有效: adb push "C:/image.jpg" /mnt/sdcard/DCIM
    然后运行Media provider(在开发者工具中):)

    “Media provider(在开发者工具中)”是指什么?我在“platform-tools”中没有看到类似的内容。 - Michael

    1

    你可能需要设置写入权限。 adb shell
    mkdir /sdcard/Pictures mount -o rw,remount rootfs / chmod 777 /mnt/sdcard exit
    然后尝试复制图片
    adb push mypic.jpg /sdcard/Pictures


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接