我的项目(在AndroidStudio中)需要一个稍后会加载进行处理的图像。这将是一个我知道的菜鸟问题......
我的计算机上有图像文件(myimage.bmp),我需要将它添加到我的项目中,这样当我在设备上测试我的应用程序时,图像文件将被加载到设备中,我可以从代码中访问它。
我该怎么办? 我在哪里放置文件以及如何访问它的路径?
到目前为止,我尝试将其放在drawable
文件夹中,我甚至创建了一个名为raw
的新文件夹并将其放在那里,但我似乎无法从我的应用中找到它。
要找到它,我试试这段代码:
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(path,"myimage.bmp");
我也尝试过:
File file = new File(path,"/myProjectName/myimage.bmp");
仍然没有。
我也在我的设备上启动了文件导航器,转到了storage/sdcard0/
Environment.getExternalStorageDirectory().getAbsolutePath()
,我查找了一个名为my project的文件夹,但没有任何类似的文件夹。
很明显我做错了什么,而且我对如何在谷歌搜索我想要的东西没有想法,所以请你好好告诉我:在什么文件夹中我必须将我的图像放在项目,我如何获得它,以便将其分配给文件?
修改
这是我检查文件的代码:
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(path,"/MyProjectName/myimage.bmp");
if (file.exists()) {
Log.e("FILE Stuff:",path + "/MyProjectName/myimage.bmp");
Log.e("FILE Stuff:","File exists");
}
else
{
Log.e("FILE Stuff:",path + "/MyProjectName/myimage.bmp");
Log.e("FILE Stuff:","File does not exist");
}
Bitmap objectbmp = BitmapFactory.decodeFile(path + "/MyProjectName/myimage.bmp");
正如我所提到的,文件不存在......即使我将文件放在C:\MyAndroidTests\MyProject\app\src\res\raw\
文件夹中
答案 0 :(得分:0)
在这种情况下,您应该将文件添加到/ res / raw文件夹。然后使用资源ID(R.raw.xxx)获取此文件并将其复制到外部存储。 例如,我有一个sqlite表,并希望在第一次启动此APP时将其从我的APP复制到外部存储。 所以,
InputStream is = context.getResources().openRawResource(R.raw.table);
OutputStream os = new FileOutputStream(DB_PATH + DB_NAME);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
os.flush();
os.close();
is.close();
这样做。 DB_PATH& DB_NAME是数据库路径和数据库文件名的两个字符串。 不要忘记将这些代码包装在try ... catch中。
答案 1 :(得分:0)
您可以尝试将图片放入资源文件夹并以此方式访问
File file = new File(file:///android_asset/image1.png);
修改强> 从可绘制文件夹中获取图像的路径
Uri otherPath = Uri.parse("android.resource://{your_app_package_name}/drawable/icon");
String path = path.toString();
File file = new File(path);