Как максимально улучшить пользовательский опыт, когда приложение имеет время загрузки - PullRequest
1 голос
/ 28 февраля 2012

Хорошо, я сделал простое радио приложение, которое транслирует музыку с моей университетской радиостанции. Проблема, с которой я столкнулся, заключается в том, что время, необходимое приложению для подготовки потока, приводит к тому, что кнопка воспроизведения перестает отвечать на запросы. Подробности:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mp = new MediaPlayer();
    initializeUI();
    setSource();
    preparedNotify();
    prepareMP();  
}

void initializeUI() {...
}

void setSource() {...
}

void prepareMP() {
    mp.prepareAsync();
}

Как вы можете видеть, приложение запускает prepareAsync, как только вызывается onCreate, но если пользователь нажимает кнопку воспроизведения до того, как он будет подготовлен, ничего не произойдет, что приведет к созданию плохого UX.

Итак, суть моего вопроса: могу ли я что-либо сделать с

а) сократить время на подготовку потока

b) запретить пользователю нажимать кнопку до готовности, сохраняя при этом плавный UX

Ответы [ 4 ]

2 голосов
/ 28 февраля 2012

У вас есть несколько вариантов в этих ситуациях.Во-первых, я бы выделил кнопку воспроизведения серым, пока поток не загрузится.Таким образом, люди не будут раздражены, если они нажмут кнопку воспроизведения и ничего не произойдет.(Это, пожалуй, самый частый ответ на эту ситуацию.) Во-вторых, вы можете подумать об использовании заставки для вашего приложения.Это может немного раздражать пользователей, но это может быть хорошим решением в зависимости от ваших потребностей.Загрузка потока займет некоторое время: так работает интернет, биты движутся так быстро.Вы всегда можете отложить их, предоставив какое-то представление верхнего уровня, в котором выполнялась предварительная буферизация, а затем позволить пользователям нажимать на ваше приложение, когда оно будет готово.

1 голос
/ 28 февраля 2012

Вы можете использовать setOnPreparedListener , чтобы знать, когда подготовлен MediaPlayer. Если пользователь нажимает кнопку воспроизведения до его подготовки, вы можете установить какой-либо флаг, например playWhenPrepared, который вы включаете в этом слушателе, а затем отображать некоторый пользовательский интерфейс, например, «Буферизация ...». Если он готов, тогда вы можете просто играть.

0 голосов
/ 28 февраля 2012

Просто, используя обычный пользовательский интерфейс для таких приложений, я бы подождал, пока пользователь нажмет кнопку, а затем загрузил бы поток вращающимся значком, скажем ... в верхнем левом или правом углах. Это не только будет работать для ваших целей, но также предоставит пользователю более знакомый и интуитивно понятный интерфейс. Удачи! -Sam

0 голосов
/ 28 февраля 2012

Вы можете присвоить кнопке воспроизведения «нажатое состояние» и установить изображение в нажатое состояние с момента его нажатия до onPostExecute.Вы также можете удалить слушателя в течение этого времени

...