Символы (т. Е. 'Sun' против '1'), используемые SimpleDateFormat, устанавливаются с помощью элемента DateFormatSymbols SimpleDateFormat.
В указанном вами коде вы не устанавливаете языковой стандарт явным образом, в результатеиспользуется системный языковой стандарт по умолчанию, часть информации, хранящейся в этом языковом стандарте, является объектом DateFormatSymbols.
Как правило, никогда не стоит полагать, что языковой стандарт по умолчанию правильный, он может различаться в зависимости от системы и другихфакторы.
Это именно то, что происходит в приведенном выше коде, эмулятор имеет локаль по умолчанию, отличную от устройства, и, следовательно, другой набор DateFormatSymbols.Исходя из вашего вывода, я бы предположил, что по умолчанию для устройства используется локаль Locale.ROOT, которая просто печатает целочисленные значения без языка.
Самый простой способ исправить это - вручную установить локаль, используемую для объектов SimpleDateFormat.
Locale locale = Locale.US; //or whatever you want, see note below
SimpleDateFormat dayFormat = new SimpleDateFormat("E", locale);
SimpleDateFormat monthFormat = new SimpleDateFormat("MMM", locale);
SimpleDateFormat dayNumFormat = new SimpleDateFormat("dd", locale);
SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy", locale);
См. http://developer.android.com/reference/java/util/Locale.html#default_locale для доступных локалей или вы можете просмотреть их через метод Locale.getAvailableLocales ().