- PVSM.RU - https://www.pvsm.ru -
Всем привет! Сегодня я расскажу о приложении DisTalk Pro. Я должен извиниться за паузу в моих постах, опять спасал мир подбивал итоги четверти, выиграл серебряную медаль кубка России [1] по бочча в тройках, выступил на форуме Обнаженные сердца [2]. Но обещание есть обещание, и на этой неделе я выложил новую версию программы DisTalk в Google Play [3] и на GitHub [4].
Для тех кто не понимает, о чем я говорю, советую почитать эту статью [5].
DisTalk Pro
Есть такой довольно популярный и дешевый девайс GoTalk. Принцип его работы прост. В матрицу вставляются карточки. На карточки с помощью кнопки Record педагог записывает аудиофрагменты. И потом при нажатии на карточку GoTalk играет эту фразу. Эти устройства широко известны в инвасообществе и используются очень давно (я помню свой третьий класс и кнопку «В туалет»)
GoTalk
Я после своего хорошего опыта с DisQwerty и DisType решил сделать приложение DisTalk с тем же функционалом (только вместо записи речи, использовать tts). И…
Задача очень простая. Сделать приложение, которое создает папку DisTalk в корне устройства. Пользователь кладет туда картинки, гружу это в GridView, при нажатии на картинку произношу название файла. Еще чтоб было повеселей сделал переключение по папкам. Чтобы учитель ребенка мог сделать разные наборы… Я сделал такое приложение, загрузил в play market. И сейчас я расскажу о том, как не надо писать приложения. (Но как надо я не знаю и не претендую на звание гуру)
Читайте документацию и тестируйте на разных версиях android.
Как мы все знаем, с обновлением Android до версии Lolipop мало просто написать в манифесте, то что хочешь писать в storage. Надо еще вызвать запрос на доступ в fs.
Кстати, в доках [6] об этом ничего нет. Stackoverflow [7] наше всё!
По этой причине я не мог понять почему у половины людей всё работает, а у половины багрепорты случаются. В DisType Pro я использую проверку и всё работает:
private void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(activity, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
}
}
Уважайте пользователя.
Следующая моя ошибка в том, что я очень плохо построил интерфейс. При первом запуске пользователь видел просто белый экран. Никакого намека на то, что нужно подключить планшет к компу, загрузить картинки и вообще. Я наивно надеялся на то, что люди почитают инструкцию в описании приложения на гугл плей. Но нет.
В новой версии я сделал:
Не забывайте ключ.
Хорошо, Вань, написал новое приложение — молодец, но почему было не обновить старое?
Потому что я потерял keystore и забыл пароль от него. Так делать не надо. Сохраняйте этот файл в надежное место. Новый jks я отправил себе на почту. Храню его!
Снимайте видеогайды про продукты
Ролик о том как пользоваться новым DisTalk'ом
Нужна помощь:
— Мой сайт. [8]
Автор: aacidov.ru
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/205263
Ссылки в тексте:
[1] кубка России: https://vk.com/wall20124065_3548
[2] выступил на форуме Обнаженные сердца: https://www.youtube.com/watch?v=zeWIlwrmI-E
[3] Google Play: https://play.google.com/store/apps/details?id=ru.aacidov.distalkpro
[4] GitHub: https://github.com/aacidov/DisTalkPro-android
[5] эту статью: https://habrahabr.ru/company/aacidov/blog/308514/
[6] доках: https://developer.android.com/training/basics/data-storage/files.html?hl=ru
[7] Stackoverflow: http://stackoverflow.com/questions/33653303/mkdirs-return-false-with-write-external-permission
[8] Мой сайт.: http://aacidov.ru
[9] Источник: https://habrahabr.ru/post/314262/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.