В качестве обходного пути, оберните декодирование в try-catch, и если произойдет исключение «нехватка памяти», просто перехватите его и попробуйте декодировать с правильно установленным inSampleSize.
Однако это больше похоже на взлом, чем на решение.
По сути, вам нужно знать, сколько памяти займет ваше декодированное растровое изображение и сколько памяти доступно для кучи вашего приложения, чтобы расти в системе прямо сейчас.
Первый легко узнать: ширина * высота * 4 байта (по умолчанию декодирование в ARGB8888).
Но я понятия не имею, как получить объем памяти кучи.