| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java ME (J2ME) > Написать программу со следующими требованиями |
| Автор: vegstr 21.6.2012, 08:07 |
| Возникло желание написать приложение с определенными требованиями. В программировании не силен. На Java никогда не писал. Немного работал с Pascal/Delphi. Поэтому для начала хотел бы узнать - возможно ли в принципе написать такое. Требования следующие: Программа должна по расписанию через определенные промежутки времени записывать звук с микрофона и уметь его проигрывать. Так же крайне желательно, чтоб записанное можно было скидывать на комп. Прога не должна мешать обычному использованию телефона (звонки/смс/инет и т.п). Необходима возможность настраивать время начала и конца записи, интервал между записями и их длительность. Например - записывать с 08:00 до 23:00 через каждые 30 минут длительностью 10 мин. Прога нужна для телефонов Nokia 5310 и Samsung GT-S5230. Просьба к знающим людям, подскажите, возможно ли такое на этих телефонах? |
| Автор: Kalisnik 21.6.2012, 16:31 |
| 007 не стал бы использовать J2Me, потому что получится в 02 раза дороже. IMHO, я бы пересмотрел форму подачи вопроса(ов). |
| Автор: vegstr 21.6.2012, 18:47 |
| Все намного прозаичнее. 007 и 02 тут абсолютно ни при чем. Прога не должна скрываться. Надо чтобы она НЕ МЕШАЛА пользоваться телефоном. |
| Автор: Kalisnik 21.6.2012, 21:38 |
| честно говоря я не совсем компетентен, но надеюсь форумчане меня поправят. 1. Не мешать прога будет только в свернутом виде - но эту функцию поддерживают не все телефоны и нет гарантий ее стабильной работы, т.к. всеми java-приложениями управляет собственно телефон, и если он посчитает что ему не хватает ресурсов, он может запросто Ваше приложение пришлепнуть. На счет Nokia и Samsung не знаю, но в SE свернуть мидлет возможно (ну может в самых древних моделях такая функция отсутствует). 2. Записывать то можно, только хранилище телефона (постоянное хранение данных) не резиновое. На карту памяти телефона java-приложение не пишет на сколько мне известно (может конечно и существуют такие модели телефонов, но это исключение), и на каждой модели телефона размер хранилища данных индивидуален (определяется производителем). Не рассчитывайте на бесчисленные мегабайты памяти - все много скромнее. Так что записывать с 8:00 до 23:00 может просто физически не хватить памяти. И на ПК записанное Вы сможете сбросить только через саму (написанную Вами) программу. Т.к. все данные в телефоне приложение сохраняет в байт-коде и не на всех телефонах доступ к хранилищу телефона открыт пользователю через обычное подключение телефон-компьютер (есть конечно методы выдергивания этих данных и т.д., но это все костыли). И даже если Вы выдерните этот байт-код, то получить из него информацию в оригинальном виде тоже будет непросто - так как методы кодирования данных у каждого производителя телефона свои собственные. Я бы порекомендовал диктофон и 1 день Вашего времени - это будет быстрее чем параллельно с написанием программы изучать java. Если такой вариант все же неприемлем, то советую Android |
| Автор: oxigen 22.6.2012, 11:23 |
| Соглашусь насчет Android. Если нужно именно решить конкретную задачу, то самое простое - поискать уже готовый диктофон с таймером под андроид. А под MIDP столкнетесь с довольно большими сложностями и не факт, что в итоге вообще будет работать на этих моделях. |
| Автор: vegstr 22.6.2012, 13:05 |
| Согласен, что на Android или с каким-либо аппаратным диктофоном было-бы проще. Но дело в том, что в данном случае это просто баловство, своего рода хобби. Если не получится - ничего страшного не произойдет. Оба телефона поддерживают File Connection API. Я правильно понимаю, что писать на карту памяти они умеют? |
| Автор: vegstr 27.6.2012, 13:40 | ||
| Пытаюсь разобраться с запуском мидлета с помощью PushRegistry. Правильно ли я понял, что невозможно просто указать определенное время, в которое приложение будет запускаться каждый день, а требуется указать конкретные дату и время запуска и в дальнейшем каждый раз обновлять дату (+1 день например)?
Объясните, плз, как правильно вычислять deltatime в вышеуказанном коде? Допустим надо запустить приложение в 10:00 следующего дня. Описание класса Date читал. Но что-то пока никак не соображу. |
| Автор: math64 28.6.2012, 09:57 |
| При использовании File Connection API мидлет должен быть подписан - иначе он перед каждой записью на карту памяти будут просить разрешения. Если в телефоне симкарта с безлимитным интернетом, можно на компьютере запустить сервер, который будет принимать данные с телефона через интернет. deltatime вычислять не надо - нужно просто указать время запуска приложения (предватительно проверив что это время ещё не наступило) При использовании сервера на компьютере можно возложить планирование записей на компьютер - компьютер посылает на телефон запрос, телефон записывает данные с микрофона и отсылает на компьютер. |
| Автор: vegstr 28.6.2012, 10:11 | ||||||
Я в курсе. Он и про использование микрофона спрашивает.
Спасибо за совет. В данной ситуации не особо нужно. Телефон всегда со мной и записи больше на нем нужны, чем на компе.
Можно по-подробнее? Желательно с примером кода. Заранее огромное спасибо! |
| Автор: math64 28.6.2012, 10:43 | ||
|
| Автор: vegstr 3.7.2012, 12:46 | ||
| math64, Спасибо за помощь. С этим разобрался. Теперь возникла другая проблема. Нижеприведенный код нормально работает на Nokia 5310. Создается нормальный аудиофайл, который можно прослушать на компе или телефоне. На Samsung GT-S5230 создается файл нулевой длины, а приложение, когда запись останавливается, выдает ошибку: java.io.IOException: I/O error occurs during commit.
Заработало Вместо setRecordStream() использовал setRecordLocation() |
| Автор: vegstr 17.7.2012, 18:29 | ||
| Люди добрые, подскажите! Нижеприведенный код нормально работает в эмуляторе. Процедура записи запускается таймером через равные промежутки времени. На телефоне (Samsung s5230) тоже работает в активном приложении. А вот в свернутом состоянии выдает исключение: javax.microedition.media.MediaException: unable to realize - initialize fail При этом файлы создаются нормально, но нулевой длины. Никак не могу понять в чем дело :(
|