コード例 #1
0
ファイル: Settings.cpp プロジェクト: SBasalaev/flare-engine
// Android paths
void setPaths() {

	PATH_CONF = std::string(SDL_AndroidGetInternalStoragePath()) + "/config";
	PATH_USER = std::string(SDL_AndroidGetInternalStoragePath()) + "/userdata";
	createDir(PATH_CONF);
	createDir(PATH_USER);
	createDir(PATH_USER + "/mods");
	createDir(PATH_USER + "/saves");

	std::string mods_folder = "data/org.flare.app/files";

	if (SDL_AndroidGetExternalStorageState() != 0)
	{
		PATH_DATA = std::string(SDL_AndroidGetExternalStoragePath());
	}
	else if (dirExists("/sdcard/Android"))
	{
		PATH_DATA = "/sdcard/Android/" + mods_folder;
	}
	else if (dirExists("/mnt/sdcard/Android"))
	{
		PATH_DATA = "/mnt/sdcard/Android/" + mods_folder;
	}
	else if (dirExists("storage/sdcard0/Android"))
	{
		PATH_DATA = "/storage/sdcard0/Android/" + mods_folder;
	}
	else if (dirExists("/storage/emulated/0/Android"))
	{
		PATH_DATA = "/storage/emulated/0/Android/" + mods_folder;
	}
	else if (dirExists("/storage/emulated/legacy/Android"))
	{
		PATH_DATA = "/storage/emulated/legacy/Android/" + mods_folder;
	}
	else
	{
		logError("Settings: Android external storage unavailable: %s", SDL_GetError());
	}

	PATH_CONF = PATH_CONF + "/";
	PATH_USER = PATH_USER + "/";
	PATH_DATA = PATH_DATA + "/";
}
コード例 #2
0
void PlatformSetPaths() {
	const std::string externalSDList[] = {
		"/mnt/extSdCard/Android",
		"/storage/extSdCard/Android"
		};
	const int externalSDList_size = 2;

	PATH_CONF = std::string(SDL_AndroidGetInternalStoragePath()) + "/config";

	const std::string package_name = AndroidGetPackageName();
	const std::string user_folder = "data/" + package_name + "/files";

	if (SDL_AndroidGetExternalStorageState() != 0)
	{
		PATH_USER = std::string(SDL_AndroidGetExternalStoragePath());
	}
	// NOTE: Next condition shouldn't be needed, but in theory SDL_AndroidGetExternalStoragePath() can fail.
	else
	{
		const std::string internalSDList[] = {
			"/sdcard/Android",
			"/mnt/sdcard/Android",
			"/storage/sdcard0/Android",
			"/storage/emulated/0/Android",
			"/storage/emulated/legacy/Android",
			};
		const int internalSDList_size = 5;

		for (int i = 0; i < internalSDList_size; i++)
		{
			if (dirExists(internalSDList[i]))
			{
				PATH_USER = internalSDList[i] + "/" + user_folder;
				break;
			}
		}
	}
	if (PATH_USER.empty())
	{
		logError("Settings: Android external storage unavailable: %s", SDL_GetError());
	}

	for (int i = 0; i < externalSDList_size; i++)
	{
		if (dirExists(externalSDList[i]))
		{
			PATH_DATA = externalSDList[i] + "/" + user_folder;
			if (!dirExists(PATH_DATA))
			{
				createDir(externalSDList[i] + "/data" + package_name);
				createDir(externalSDList[i] + "/data" + package_name + "/files");
			}
			break;
		}
	}

	PATH_USER += "/userdata";

	createDir(PATH_CONF);
	createDir(PATH_USER);
	createDir(PATH_USER + "/mods");
	createDir(PATH_USER + "/saves");

	PATH_CONF += "/";
	PATH_USER += "/";
	PATH_DATA += "/";
}