Для новичков DimonVideo
Не стал делать километровую статью, переписал с форума посты, кое что добавил от себя. В этой статье описаны наиболее часто встречающиеся и простые проблемы и их решения, чтобы не флудить на форуме
Q: Сколько весит прога?
A: Около 132 мб
Q: Какие системные требования у программы?
А: Минимальные:
- Microsoft Windows XP Professional SP2 or Microsoft Windows XP Home SP2
- 512 MB RAM minimum
- 430 MB disk space
- 1.5 GHz or faster processor
- Display supporting 16-bit color at 1280x1024
Рекомендуемые:
- Microsoft Windows XP Professional SP2 or Microsoft Windows XP Home SP2
- 2 GB RAM minimum
- 430 MB disk space
- 2.8 GHz or faster processor
- Display supporting 24-bit color at 1280x1024
- Sound card
Q: Требует ли прога регистрации?
А: Да. После установки проги на комп, нужно будет предварительно зарегистроваться на сайте https://www.forum.nokia.com, для подтверждения аккаунта перейти по ссылке в письме, которое вам придет после регистрации. Только после этого выйти из самой проги в интернет на сайт, где введете свой логин и пароль и получите ключ к программе. (примечание: регистрировать нужно только с того компьютера, на котором будет стоять прога, если переместить прогу на другой комп, то она снова потребует регистрацию!)
Q: Есть русификатор на эту прогу?
А: Нет и не будет. Прога с русификатором работает некорректно
Q: Картинки нужно резать под экран смарта?
А: Не обязательно, но лучше чтобы они были под экран смарта, либо другого размера, но пропорционально, потому что если картинка не пропорциональна экрану, она растянется/сузится и будет смотреться очень некрасиво.
Q: Можно ли использовать прогу для создания тем на 7 и 8.0 ось?
А: Можно, но для этих осей лучше использовать ThemeStudio 1.2.1
Q: Какую платформу выбирать при сохранении темы?
А: Для 7 и 8.0 оси-2nd fp1 и 2, для 8.1 оси 2nd fp3, для 9.1 оси 3rd fp1
Q: Через какую прогу можно создавать иконки в svg формате?
А: Adobe Illustrator
Q: Почему у меня иконки смещаются?
А: Редактируйте иконки через Adobe Illustrator
Q: Скачал тему, но хочется ее немного отредактировать, можно ли это сделать через Carbide?
А: Нет, для этого нужны 2 другие программы - sistool и mbmtool
Q: Делаю тему из двух рисунков. На рисунке в режиме ожидания отображаетя navi pane (полоска где дата) из рисунка который в меню, как убрать?
А: Двойным кликом мыши переводим полоску в меню в режим редактирования. Затем edit=>layer/effect=>add background, удаляем layer, после этого переводим в режим редактирования полоску из режима ожидания, затем edit=>layer/effect=>add layer и удаляем background
Q: Почему при создании sis-пакета, тема весит очень мало и не устанавливается?
А: Папка workspace должна находиться по умолчанию и путь к этой папке не должен содержать русских букв, только латиница
Q: Что такое UID и для чего он нужен?
А: UID это идентификатор приложения, нужен для замены иконок сторонних приложений
Q: Как изменить фон темы?
А: Слева в колонке нажимаете background, появятся 2 маленьких фона, именно туда и копируете картинку которую хотите вставить
Q: Как изменить стандартные иконки и папки?
А: Слева в колонке нажимаете icon, чуть правее появятся маленькие экраны с указанием локаций иконок. Нажимаете на одну из них и ниже в горизонтальном положении вам представятся иконки которые можно изменить. Копируете свою иконку и вставляете ее.
Q: Как поменять цвет шрифта в смс?
А: Так же в левой колонке colors=>main area items=>main area texts. Там меняете цвет
Q: Как избавиться от полоски под датой, там где блютуз, ключ, конверт?
А: Путем вставки черной маски в пункт areas=>main area=>idle main area background=>status indiactor background
Q: Можно ли png конвертировать в svg?
А: Можно, но это будет не чистое векторное изображение, лучше самому иконки рисовать в векторе
Q: Как менять иконки к сторонним приложениям?
А: windows=>preference=>carbide=>3d party icons. Потом вводишь uid, вставляешь иконку, сохраняешь и выходишь, потом снова заходишь и все
Q: Как избавиться от синей полоски где дата
А: можно вырезать из картинки именно этот кусочек и вставить. При выделении этой полоски внизу справа написан ее размер
Q: Как сделать хорошую читаемость в черных темах?
А: Можно просто поставить шторку светлую, но полупрозрачную
Q: Что такое формат *.tdf?
А: В этом формате хранятся проекты в Carbide
Q: Если у меня стоит версия 3.1, можно ли сделать апдейт до версии 3.1.1. не скачивая прогу полностью?
А: Нет, потому что на первый взгляд проги одинаковые, но это не так
Q: Когда вставляю картинку с переходом цветов например от черного в серый то идут кокие-то разводы, на компе все нормально а на смарте нет
А: Все просто, у экрана смарта меньшее количество цветов, чем у компа. Но это относится только к растровой графике
Q: Почему мой проект весит так много?
А: При упаковывании в sis-пакет, вес намного уменьшится
Q: Процесс упаковывания в sis-пакет S60 2nd fp1 и 2
А: create a new sis-package (желто-коричневая иконка в вде подарка)=>target platform выбираем S60 platform 2nd edition feature packs 1 and 2, в theme name вводим имя темы, color depth выбираем глубину цвета (остальные параметры по усмотрению, я ими не пользуюсь), жмем next=> package это директория сохранения темы, package signing это выбор добавлять сертификат или нет (по умолчанию - нет). если вас все устраивает, жмем finish. Тема готова.
Q: Процесс упаковывания в sis-пакет S60 2nd fp3
А:create a new sis-package (желто-коричневая иконка в вде подарка)=>target platform выбираем S60 platform 2nd edition feature packs 3, в theme name вводим имя темы, color depth выбираем глубину цвета (остальные параметры по усмотрению, я ими не пользуюсь), жмем next=> package это директория сохранения темы, package signing это выбор добавлять сертификат или нет (по умолчанию - нет). если вас все устраивает, жмем finish. Тема готова.
Q: Процесс упаковывания в sis-пакет S60 3rd and 3rd fp1
А:create a new sis-package (желто-коричневая иконка в вде подарка)=>target platform выбираем S60 platform 3nd edition and 3nd edition feature packs 1, в theme name вводим имя темы, color depth выбираем глубину цвета (остальные параметры по усмотрению, я ими не пользуюсь), жмем next=> package это директория сохранения темы, package signing - выбираем ключ и вводим пароль сертификата. если вас все устраивает, жмем finish. Тема готова.
Q: Как сделать сертификат?
A: При упаковывании темы когда появится окно где будет дирректория сохранения темы и подписка сертификата, жмем modify... нажимаем внизу окна new, потом где key pair name вводим ключ, допустим свой логин, потом нажимем make keys.., в user information вводим информацию о себе, в destination information ничего не трогаем, вводим только пароль и повтор пароля и жмем generate. после того как вы вернетесь обратно в предыдущее окно, поставите галочку напротив save password (если не хотите каждый раз вводить пароль) и жмем save. все, сертификат готов.
Надеюсь эта статья поможет пользователям найти ответ на некоторые интересующие вопросы и хоть немного прекратить флудить на форуме. =Yusma777=
DimonVideo
Проблемы и их решения в Carbide Ui Themestudio 3.1.1 Не стал делать километровую статью, переписал с форума посты, кое что добавил от себя. В этой статье [...] читать описание
14568
Программирование для смартфонов DimonVideo
В более простых терминах, Jython позволяет вам составить скрипт для любого нужного вам Java-кода, переходящий при этом в код, который по количеству строк меньше исходного в два-десять раз. Поскольку Python является языком, с димамической типизацией, вы, к тому же, можете разрабатывать приложения быстрее и с меньшим количеством ошибок, получая в результате более гибкую программу. Jython можно получить на https://www.jython.org/.
Jyhon содержит несколько элементов:
* jython, интерпретатор Jython.
* jythonc, перекомпилирующий программу на Jython в файлы классов Java. Полученные в результате файлы классов Java могут использоваться как любые другие файлы классов Java, например, как апплеты, сервлеты или beans.
* Набор модулей, обеспечивающий пользователей Jython подавляющим большинством модулей из стандартной библиотеки Python.
* Несколько программ, демонстрирующих различные аспекты программирования на Jython.
Доступ к библиотекам Java
Рассмотрим программу ButtonDemo.py.
import java
from pawt import swing
def exit(e): java.lang.System.exit(0)
frame = swing.JFrame(\'Swing Example\', visible=1)
button = swing.JButton(\'Close Me!\', actionPerformed=exit)
frame.setDefaultCloseOperation(3)
frame.contentPane.add(button)
frame.pack()
Эта простая программа демонстрирует, насколько просто создавать программы на Jython, использующие библиотеку компонентов Swing. Первая строка импортирует пакет java, необходимый нам для вызова java.lang.System.exit(). Вторая строка импортирует Java-пакет swing (модуль pawt вычисляет точное местонахождение Swing, который может находиться в javax.swing или, возможно, в com.sun.java.swing). Четвертая строка создает рамку JFrame, присваивая ее свойству visible значение \"истина\". Пятая строка создает кнопку JButton с меткой и определяет, какая функция должна вызываться при нажатии этой кнопки. Шестая строка вызывает метод setDefaultCloseOperation, который указывает, что следует делать при закрытии ока(3 эквивалентно EXIT_ON_CLOSE). И наконец, последние две строки помещают кнопку JButton в рамку JFrame и делают это все видимым.
Для того чтобы упростить использование библиотек Java, Jython выполняет большой объем работы незаметно для пользователямя. Например, когда Jython импортирует пакет Java, он активно исследует соответствующий пакет, и затем, используя Java Reflection API, находит содержимое пакетов и подписи классов и методов. Кроме того, Jython \"на лету\" конвертирует между собой типы Python и Java. В ButtonDemo.py, например, текст кнопки (\'This is a Swinging example!\') представляет собой строку Python. Перед вызовом конструктора для JButton, Jython находит наиболее подходящий конструктор (например, отклоняя версию, принимающую Icon в качестве первого аргумента), и автоматически конвертирует строковый объект Python в строковый объект Java. Более сложные механизмы позволяют конструктору JButton принимать ключевой параметр actionPerformed=exit. Такой стиль невозможен в Java, поскольку Java не имеет возможности манипулировать функциями (или методами) как объектами первого класса. Jython исключает необходимость создания класса ActionListener с единственным методом actionPerformed, хотя при желании вы можете использовать более многословную форму.
DimonVideo
Jython - это язык программирования 100% Pure Java. Он позволяет полностью перевести исходный код языка Python в байт-код Java, и запустить полученный байт-код [...] читать описание
10515
Программирование для смартфонов DimonVideo
Одним из первооткрывателей был Jython(раньше проект называется JPython). Это была первая серьёзная инициатива, которую увы компания Sun не поддержала и сейчас находится в роли догоняющего. Бывшие разработчики Jython, которые вложили основной вклад в проект, сейчас работают над IronPython(в Microsoft) и над PyPy(по гранту EU). Недостаток разработчиков в одно время практически заморозил проект, который страдал проблемами с совместимостью и производительностью относительно Python. Однако в последнее время произошли внтурение изменения в команде, вышла новая версия и по некоторым тестам он не только быстрее IronPython, но и сравним в скорости с CPython.
Неделю назад вышла 1.0 версия JRuby. Именно это событие и побудило меня к написанию статьи. Этот релиз полностью совместим с MRI(Matz Ruby Implementation), текущей реализацией языка Ruby. Работает, как в режиме интерпретатора, так и в режиме компилятора в байт-код(полную совместимость обещают в версии 1.1). На JRuby уже выпускают коммерческие продукты. JRuby открывает для разработчиков Ruby огромные горизонты: доступ к Java-библиотекам, возможность создания Swing-приложений, развёртывание в виде WAR на серверах приложений и многое другое. Такие компании как Sun и ThoughtWorks занимаются спонсированием основных разработчиков JRuby. Все три основных Java IDE(IntelliJ IDEA, Eclipse, Netbeans) имеют поддержку Ruby. Sun так же собирается добавить invokedynamic байт-код в свою VM, что должно упростить работу создателям JRuby и сделать его \"first-class citizen\".
Нельзля не упомянуть о Groovy. Это относительно новый язык, вдохновлённый Ruby, Python и Smalltalk, но с оглядкой на Java. Основная его задача была заполнение щели между Ruby и Java. Причём он должен был это сделать лучше чем JRuby. Интеграция с Java в нём действительно гораздо проще. Однако, взять лучшее из двух миров, на мой взгляд, не получилось. Очень уж сложно скрещивать технологии. Особенно это заметно при сравнении Ruby on Rails и Grails. Последний представляет собой смесь Java best practices(Spring, Hibernate, XFire, Jakarta Commons...) и самого Groovy, который используется в основном лишь для согласования отношений между компонентами. Было бы куда интереснее написать эту часть кода на Java и сделать фреймворк Groovy-независимым. Я считаю, что скрещивать технологии таким образом неправильно, т.к. происходит смесь идеологий. Именно поэтому мне не так нравится Groovy, несущий Java-наследие.
Динамические языки без сомнения одна из features без которых VM не выжить в наше время, это понимают и в Microsoft, анонсировав DLR(Dynamic Language Runtime). Кстати сам Ruby с 1.9 версии лишиться старого интерпретатора и на его место придёт VM, которая раньше называлась YARV(Yet Another Ruby Virtual Machine), правда теперь она уже не \"ещё одна\".
Автор статьи: https://chapaev.habrahabr.ru/
DimonVideo
Нет, здесь Вы не увидите очередного спора о Java vs PHP/Perl/Python/Ruby... Речь пойдёт о Java как технологии и о JVM (Java Virtual Machine) в частности. JVM - лакомый кусочек. [...] читать описание
4089
Программирование для смартфонов DimonVideo
Данный текст лучше просматривать без переноса по словам (слогам или еще чему-то), то есть в редакторе, который не переносит текст а позволяет прокручивать окно вправо. Иначе вы можете запутоться в строках...
Сразу предупрежу, что все странички (которые упоминаю в этой статье) есть в папке docs (с такими же именами, но с расширением .mht)!
Все упомянутые программы вы можете скачать одним архивом (ссылки внизу).
То есть, если вы скачаете этот архив, и где-то по тексту руководства встретите название файла или программы, то они будут в этом архиве!!! (Т.е. больше ничего качать будет не нужно.)
Сначала я прочел и разобрался вот с этим: https://www.nbl.fi/~nbl928/ensymble.html (если хотите, то далее можете тоже сами разобраться).
Если не хотите, то:
1. Качаем все необходимое:
а. Python-2.4.3 (https://python.org/)
б. ensymble_python2.4-0.23.py (https://www.nbl.fi/~nbl928/ensymble.html)
в. OpenSSL (https://www.stunnel.org/download/binaries.html)
2. Получаем сертификат для подписи. Кто не знает, читаем https://dimonvideo.ru/articles/file_592.html
На выходе данного шага у вас под рукой должны быть файлы:
а. mykey.key
б. mycert.cer
3. Ставим ПО (В УКАЗАННЫЕ ПАПКИ):
а. Устанавливаем Python-2.4.3 в папку по умолчанию C:\\Python24\\
б. Создаем папку C:\\SSL\\
в. Кладем файл ensymble_python2.4-0.23.py в папку C:\\SSL\\
г. Переименовываем C:\\SSL\\ensymble_python2.4-0.23.py в C:\\SSL\\ensymble.py
д. Распаковываем openssl.zip прямо в папку C:\\SSL\\ (получаем C:\\SSL\\openssl.exe)
е. В переменную среды PATH добавляем C:\\SSL
I. Настраиваем (пишем везде БЕЗ КАВЫЧЕК):
Пуск -> Настройка -> Панель управления -> Система -> Закладка \"Дополнительно\" -> Кнопка \"Переменные среды\"
В разделе \"Системные переменные\" ищем \"PATH\" либо \"Path\", кликаем два раза
Если было имя переменной \"Path\" то меняем на \"PATH\"
А к значению переменной в конце добавляем \";C:\\SSL\" без кавычек!
II. Проверяем:
Пуск -> Выполнить...
В строке пишем \"cmd\"
Жмем Enter
В открывшемся окне пишем \"ensymble.py\"
Жмем Enter
Должно вылезти \"Ensymble developer utilities for Symbian OS\" и всякая доп. информация
Там же пишем openssl.exe
Жмем Enter
Строка должна поменяться на \"OpenSSL> \"
Все проверено, окно можно закрывать
Если что-то не получилось - разбирайтесь с вызовами этих двух программ (ensymble.py и openssl.exe), они должны работать (реагировать на вызов из командной строки)
ж. Создаем рабочую папку C:\\my\\
Кладем в нее полученные ранее файлы mykey.key и mycert.cer
4. Первая программа
а. Создаем папку C:\\my\\first\\
б. Добаляем скрипт
I. Либо в папке C:\\my\\first\\ создаем новый файл \"default.py\"
Его нужно создать в кодировке UTF-8 без BOM
Это можно сделать, например, в программе Notepad
Для пробы напишем в этом файле всего две строки:
import appuifw
appuifw.note(u\'Hello world!\', u\'info\')
Напишите их без отступа слева!
Для справки, в папку со скриптом можно класть и другие файлы, все они попадут в ваш .sis и установятся вместе с программой
II. Либо копируем туда уже имеющуюся программу
Как бы она не называлась, ее обязательно переименовать в \"default.py\"!
Итак, мы получили папку C:\\my\\first\\ с нужными файлами и обязательным файлом C:\\my\\first\\default.py
в. Создаем в папке C:\\my\\ файл \"first.bat\" в стандартной win1251 кодировке
В него пишем две строки:
ensymble.py py2sis --appname=MyFirstApp --version=1.0.0 --lang=RU --shortcaption=\"MFAPP\" --caption=\"My first application\" --cert=mycert.cer --privkey=mykey.key --passphrase=12345678 --verbose C:\\my\\first C:\\my\\first.sis
pause
Где:
--appname - название приложения
--version - версия приложения (формат строгий x.y.z)
--lang - язык
--shortcaption - короткое название приложения
--caption - длинное название приложения
--cert, --privkey, --passphrase - необходимы для подписи
--verbose - обязательно! чтобы увидеть результат
C:\\my\\first - папка для упаковки
C:\\my\\first.sis - имя нового sis файла
Не забываем писать во второй строке \"pause\"!
г. Запускаем C:\\my\\first.bat (кликнуть два раза мышкой)
Находим в окне строку \"ensymble.py: warning: no UID given, using auto-generated test UID 0xe9d39af1\"
И ЗАПИСЫВАЕМ куда-нибудь сгенерированный UID (он будет у вас другой) в данном случае это \"0xe9d39af1\"
Советую вести базу по UID\'ам так как на одном телефоне не может быть установлено двух программ с одинаковыми UID\'ами!
Жмем любую клавишу, чтобы окно закрылось
Открываем на РЕДАКТИРОВАНИЕ файл C:\\my\\first.bat и меняем в нем первую строку на
ensymble.py py2sis --uid=0xe9d39af1 --appname=MyFirstApp --version=1.0.0 --lang=RU --shortcaption=\"MFAPP\" --caption=\"My first application\" --cert=mycert.cer --privkey=mykey.key --passphrase=12345678 --verbose C:\\my\\first C:\\my\\first.sis
То есть просто добавляем ключ \"--uid\" со сгенерированным UID\'ом
Это необходимо, чтобы после пересборки (повторного запуска C:\\my\\first.bat) наше приложение осталось самим собой, то есть использовало тот же идентификатор, а не новый
д. Полученный после этого файл C:\\my\\first.sis можно смело устанавливать на телефон (подписывать не нужно! он уже подписан)
5. ДОП. ИНФОРМАЦИЯ
а. Добавление ИКОНКИ
Во-первых, иконку нужно создать (или утащить)
Иконка представляет собой картинку в векторном формате SVG-Tiny
Сделать ее можно либо в Carbide.ui S60 Theme Edition 3.1 (в архив ПО не клал - очень много весит), либо еще в другой программе с поддержкой данного формата
Короче, как это сделать, лучше спросите у темостроителей, так как они рисуют иконки
Далее иконку кладем в папку C:\\my\\ и обзываем first_icon.svg
Далее копируем файл C:\\my\\first.bat в C:\\my\\first_with_icon.bat
Открываем C:\\my\\first_with_icon.bat на редактирование
Меняем первую строчку на
ensymble.py py2sis --uid=0xe9d39af1 --appname=MyFirstApp --version=1.0.0 --lang=RU --icon=first_icon.svg --shortcaption=\"MFAPP\" --caption=\"My first application\" --cert=mycert.cer --privkey=mykey.key --passphrase=12345678 --verbose C:\\my\\first C:\\my\\first.sis
То есть добавляем ключ \"--icon\" с именем файла иконки
Запускаем C:\\my\\first_with_icon.bat
Полученный .sis ставим в телефон и ПЕРЕЗАГРУЖАЕМ ЕГО, так как иконка может не проявиться до перезагрузки
б. Доступ приложения (ЕСЛИ НУЖНЫ СПЕЦ. ФУНКЦИИ)
Это наверно последнее, в общем, если вам необходимо разрешить вашему приложению какие-либо функции, например, чтение и запись в календарь или доступ к сети, то при создании .sis файла необходимо добавить соответствующие директивы в ключ \"--caps\"
Копируем файл C:\\my\\first.bat в C:\\my\\first_with_caps.bat
Открываем C:\\my\\first_with_caps.bat на редактирование
Меняем первую строчку на
ensymble.py py2sis --uid=0xe9d39af1 --appname=MyFirstApp --version=1.0.0 --lang=RU --shortcaption=\"MFAPP\" --caption=\"My first application\" --cert=mycert.cer --privkey=mykey.key --passphrase=12345678 --caps=ReadUserData WriteUserData --verbose C:\\my\\first C:\\my\\first.sis
То есть добавляем ключ \"--caps\" с необходимыми директивами через знак \" \", для примера, директивы ReadUserData и WriteUserData позволяют приложению работать с календарем (и еще чем-то)
Запускаем C:\\my\\first_with_caps.bat
Полученный .sis ставим в телефон
Список доступных директив и их описание можно найти в файле docs\\Capability_Descriptions_v1_0_en.pdf
PS:
Советую ставить приложения в память телефона
В папке my_example находится то, что по сути у вас должно быть в папке C:\\my\\
То есть это пример, можете пользоваться им, только замените файлы mykey.key и mycert.cer на свои, иначе ваша программа пойдет только на моем телефоне :)
Программа ensymble.py умеет еще кое-что, вызовите ее как в пункте 3.е.II и увидите, что в ней есть кроме py2sis
По поводу доработки статьи и подобного обращайтесь на сайте https://dimonvideo.ru/user/NightCat либо по мылу justacat@mail.ru
Моментальный ответ не обещаю, но...
И статью подправлю, если что.
ССЫЛКИ:
Тут вот можете скачать собственно файлы примеров и прочее (что упомянуто в статье: документы, странички, примеры): скачать
А по этой ссылке полный архив необходимых программ. В него включено то, что лежит по предыдущей ссылке. скачать
DimonVideo
Итак, краткое руководство о том, что и как сделать, чтобы таки собрать из .py скрипта .sis пакет для 9! версии наших любимых зверьков. Все по порядку, [...] читать описание
6136
Программирование для смартфонов DimonVideo
Python на Symbian S60: объекты, создание интерфейса (модуль appuifw) пример Interface.py
Точка, точка, запятая...
Мы живем в мире объектов, каждый из которых имеет определенные свойства: цвет, размер, вкус, запах и другие. Эти предметы могут выполнять различные действия — например, авторучка предназначена для письма, а телефон, чтобы по нему звонить.
Аналогично устроен и мир языка Python, вот только объекты в нем называются классами. Характеризуются объекты действиями — методами и свойствами — атрибутами.
Создаются объекты (классы) в языке Python следующим образом:
class имя_объекта:
Т.е. после ключевого слова class следует имя нового класса, а затем после двоеточия — код на языке Python. Код может содержать как простые инструкции (создание атрибутов), так и определение функций (создание методов):
>>> class new:
... attribute = ‘Hello’
... def method(self, name):
... print self.attribute, name
...
>>>
Таким образом, мы создали класс (объект) с именем new. Он имеет свойство attribute и действие method. Для того чтобы использовать класс, необходимо создать его экземпляр (делается это как вызов функции) и обозначить переменную, через которую сможем обращаться к атрибутам и методам этого класса. То есть сначала указывается имя объекта, потом ставится точка и, наконец, вводится имя атрибута или метода:
>>> my_class = new()
>>> my_class.attribute
‘Hello’
>>> my_class.method(‘World’)
Hello World
>>>
Атрибуты класса могу быть не только прочтены, но и изменены
>>> my_class.attribute = ‘Good-bye ’
>>> my_class.method(‘Albert’)
Good-bye Albert
>>>
Вам не показалось странным, что мы указали при создании функции method два аргумента (self,name), а при его вызове только один (‘World’)? Дело в том, что Python сам подставляет вместо self имя объекта. Т.е. my_class.method(‘World’) аналогичен method(my_class, ‘World’).
Как видно, первым аргументом метода является self. Он обязателен и используется, когда внутри функций необходимо обращаться к другим атрибутам и методам класса. Любая же переменная внутри функций, не начинающаяся с self, будет являться локальной. Если необходимо при создании объекта указать начальные параметры, то нужно определить функцию с именем __init__:
>>> class new2:
... def __init__(self, name):
... self.attribute = name
... self.method()
... def method(self)
... text = ‘Hello’
... print text, self.name
...
>>> my_class2 = new2(‘Albert’)
Hello Albert
>>>
К сведению, объекты могут и не иметь методов, а содержать только атрибуты — в этом случае они играют роль хранилищ. Причем атрибуты у объекта можно создавать уже и после его создания:
>>> my_class2.new_attribute = 1024
>>> print my_class2.new_attribute
1024
>>>
На этом про объекты пока все. Теперь вы можете создавать специализированные классы, выполняющие определенные функции. Почти так же работают и модули.
Модули и как их использовать
С точки зрения Python модуль это тоже объект. Он имеет атрибуты и методы, которые мы обычно используем в программе в виде переменных и функций. Кроме того, модуль также может содержать и другие объекты, которые, в свою очередь, имеют атрибуты и методы... и т.д.
Возьмем, к примеру, модуль appuifw. Для того чтобы узнать все его возможности, можно использовать функцию dir(). Набрав dir(appuifw), вы увидите список имен всех тех переменных и функций, которые доступны пользователю. У меня установлена новейшая, на момент написания, версия Python 1.4.0. (не забывайте постоянно обновляться!), и выполнение этой функции дало следующий результат:
>>> import appuifw
>>> dir(appuifw)
>>>
Как видно, данный модуль представляет огромное количество средств для создания уникального интерфейса программы — ее «лица». Какие бы нужные функции программа не выполняла, необходимо обязательно продумать то, как это представить пользователю. А последний (думаю, по себе знаете) терпеть не может разбираться и угадывать то, что умеет программа, а чего нет. Если в программе тяжело разобраться, то она стирается и заменяется аналогом. Поэтому важно уделить время созданию интуитивного интерфейса, и в этом нам поможет модуль appuifw.
От слов перейдем к делу, а конкретно — к диалоговым функциям:
note(text ]
Создает окно для вывода сообщения, которое держится около 3 секунд. Имеет обязательный аргумент text (строка Unicode) — само сообщение. Второй параметр необязательный и обозначает тип сообщения. По умолчанию равен ‘info’, но может иметь значения ‘error’ и ‘conf’. Третий аргумент, также необязательный, можно выставить на значение 1. В этом случае информационное окошко появится даже тогда, когда сама программа скрыта (свернута):
>>> appuifw.note(‘Hello!’)
>>> appuifw.note(‘Error!’, ‘error’)
>>> appuifw.note(‘OK’, ‘conf’)
>>>
popup_menu(list)
Создает окно с выбором варианта из имеющего списка. Аргумент list должен быть списком строк Unicode, которые и будут являться описанием имеющихся вариантов. При выборе того или иного варианта, функция возвращает его номер. Необязательный аргумент label указывает подпись окошка:
>>> list =
>>> index = appuifw.popup_menu(list, u‘Menu:’)
>>> index
0
>>> list
u’Open’
>>>
popup_menu(list)
query(label, type ])
Создает окно для ввода данных. Аргумент label (строка Unicode) указывает подпись окна. Аргумент type указывает тип окна:
1) ‘text’ — ввод текста;
2) ‘code’ — ввод текста в виде звездочек (для паролей);
3) ‘number’ — ввод целого числа;
4) ‘float’ — ввод вещественного числа;
5) ‘date’ — ввод даты;
6) ‘time’ — ввод времени;
7) ‘query’ — вопрос («ОК» или «Отмена»).
Причем:
1) ‘text’и ‘code’ — возвращают текст;
2) ‘number’ и ‘float’ — целое и вещественное число соответственно;
3) ‘date’ и ‘time’ — значение в секундах в виде вещественного числа;
4) ‘query’ — 1 или None.
Необязательный аргумент initial_value определяет значение окна по умолчанию (игнорируется для ‘float’):
>>> appuifw.query(u’Text:’, ‘text’)
u’Hello!’
>>> appuifw.query(u’Code:’, ‘code’)
u’Parol’
>>> appuifw.query(u’Number:’, ‘number’)
2007
>>> appuifw.query(u’Float:’, ‘float’)
1.333333’
>>> appuifw.query(u’Date:’, ‘date’)
1183755600.0
>>> appuifw.query(u’Time:’, ‘time’)
75600.0
>>> appuifw.query(u’Good-bye?’, ‘query’)
1
>>>
type = ‘text’
type = ‘code’
type = ‘number’
type = ‘float’
type = ‘date’
type = ‘time’
type = ‘query’
multi_query(label1, label2)
Создает окно, состоящее из двух полей для ввода текста. При нажатии OK — возвращает кортеж из двух введенных строк. Функция вызывается с двумя аргументами: подписи первого и второго полей (строки Unicode):
>>> appuifw.multi_query(u’Text1:’, u’Text2:’)
(u’Hello’, u’World’)
>>>
multi_query(label1, label2)
selection_list(list )
Создает окно со списком вариантов, позволяет выбрать один из них. Аргумент list должен быть списком строк Unicode, которые являются описанием имеющихся вариантов. При выборе того или иного варианта функция возвращает его номер. Если необязательный аргумент search_field равен единице, то под окошком появляется поле для поиска:
>>> list =
>>> index = appuifw.selection_list(list)
3
>>> list
u’Palm’
>>> appuifw.selection_list(list, 1)
0
>>>
selection_list(list)
selection_list(list, 1)
multi_selection_list(list )
Создает окно для выбора нескольких вариантов из имеющего списка с помощью установления напротив них флажков. Выбор осуществляется нажатием на джойстик. Аргумент list должен быть списком строк Unicode, которые будут являться описанием имеющихся вариантов. При выборе одного или нескольких вариантов функция вернет их список. Необязательный аргумент style указывает стиль исполнения: по умолчанию он равен «checkbox» (флажки находятся слева), но может быть равен «checkmark» (флажки находятся справа). Если необязательный аргумент search_field равен единице, то под окошком появляется поле для поиска:
>>> list =
>>> appuifw.multi_selection_list(list)
(0, 1)
>>>
multi_selection_list(list)
multi_selection_list(list, search_field =1)
available_fonts()
Возвращает список шрифтов (их имена в Unicode), установленных на смартфоне:
>>> appuifw.available_fonts()
>>>
app
Является объектом, который не нужно создавать, так как это уже произошло при загрузке модуля — просто используем его возможности. Объект имеет следующие атрибуты:
body
Отвечает за рабочую область приложения (его «тело»). Может быть присвоен один из трех объектов: Text, Canvas, Listbox. Что это за объекты, будет рассказано в следующих статьях.
menu
Этому атрибуту присваивается специального вида список для создания меню (вызывается при нажатии на левую софт-клавишу):
>>> def exit():
... if appuifw.query(u»You want exit?», «query»)==1:
... appuifw.app.set_exit()
...
>>> appuifw.app.menu =
>>>
Теперь попробуйте нажать на левую софт-клавишу (появится меню для выбора нужной функции).
Общий вид списка: . Каждый кортеж состоит из одного элемента в виде строки, отвечающего за имя пункта, и второго элемента в виде имени функции, вызываемой сразу после выбора пункта. Вот пример с несколькими пунктами:
>>> def about():
... appuifw.note(u’My name Python!’)
...
>>> def exit():
... if appuifw.query(u»You want exit?», «query»)==1:
... appuifw.app.set_exit()
...
>>> menu =
>>> appuifw.app.menu = menu
>>>
Обычное меню.
Если необходимо сделать вложенное меню в каком-нибудь пункте, то вместо имени функции указывается кортеж такого же вида (title1, callback1), (title2, callback2),...,(titleN, callbackN)):
>>> def up():
... appuifw.note(u‘Up’)
...
>>> def down():
... appuifw.note(u‘Down’)
...
>>> def left():
... appuifw.note(u‘Left’)
...
>>> def right():
... appuifw.note(u‘Right’)
...
>>> def about():
... appuifw.note(u’My name Python!’)
...
>>> def exit():
... if appuifw.query(u»You want exit?», «query»)==1:
... appuifw.app.set_exit()
...
>>> go = (
...(u’Up’, up),
...(u’Down’, down),
...(u’Left’, left),
...(u’Right’, right))
>>> menu =
>>> appuifw.app.menu = menu
>>>
Вложенное меню.
Такая организация списков (на разных строках) не даст запутаться стороннему программисту, да и себе тоже.
screen
Атрибут отвечает за размер видимой части экрана приложения. Может иметь три значения: ‘normal’ (по умолчанию), ‘large’ (средний), ‘full’ (на весь экран — обычно используется в играх):
>>> def normal():
... appuifw.app.screen = ‘normal’
...
>>> def large():
... appuifw.app.screen = ‘large’
...
>>> def full():
... appuifw.app.screen = ‘full’
...
>>> menu =
>>> appuifw.app.menu = menu
screen = ‘large’
screen = ‘full’
screen = ‘normal’
title
Атрибут отвечает за подпись приложения в верхней части экрана. Часто программисты задают его изменение в зависимости от ситуации по ходу выполнения программы, а не только единовременно после запуска:
>>> print appuifw.app.title
u’Python’
>>> appuifw.app.title = u’Hello World!’
>>>
Подпись приложения.
orientation
Атрибут отвечает за ориентацию экрана. Может иметь следующее значения: ‘automatic’ (по умолчанию), ‘portrait’ (портретный режим) и ‘landscape’ (ландшафтный режим). Данный атрибут актуален только для смартфонов с Symbian 9.
>>> appuifw.app.orientation
‘avtomatic’
>>> appuifw.app.orientation = ‘portrait’
>>> appuifw.app.orientation = ‘landscape’
>>>
Атрибуты кончились, переходим к методам объекта app:
exit_key_handler()
Этот метод вызывается при нажатии на правую софт-клавишу (именно на нее обычно нажимают для выхода из программы или отмены действия):
>>> def exit():
... if appuifw.query(u»You want exit?», «query»)==1:
... appuifw.app.set_exit()
>>> appuifw.app.exit_key_handler = exit
>>>
Теперь попробуйте нажать на правую софт-клавишу. В общем, ему может быть присвоено имя любой функции.
focus()
Этот метод вызывается при изменении активности приложения: если приложение сворачивается, то эта функция вызывается с аргументом 0, если приложение становится активным — то с аргументом 1:
>>> def call(focus):
... if focus == 1:
... print ‘foreground’
... else:
... print ‘background’
...
>>> appuifw.app.focus = call
>>>
background
>>>
foreground
>>>
Для того чтобы получить то же самое, после набора кода сначала сверните Python, а потом перейдите к нему через Диспетчер задач.
full_name()
Метод возвращает полный путь к тому *.app-файлу (на Symbian 9 бывает и *.exe-файл), который запустил нашу *.py-программу (выполняющуюся в данный момент). Очень удобно использовать, когда необходимо получить путь к рабочей папке программы:
>>> appuifw.app.full_name()
u’c:\\\\system\\\\apps\\\\Python\\\\Python.app’
>>>
uid()
Метод возвращает UID того *.app/*.exe-файла, который запустил нашу *.py-программу (выполняющуюся на данный момент):
>>> appuifw.app.uid()
u’10201515’
>>>
set_exit()
Метод производит немедленный выход из программы (на Nokia 6120 с Symbian 9.2 это не сработало — возможно, и на других то же самое).
layout(id)
Метод возвращает информацию о размере (первый кортеж) и положение (второй кортеж) элементов интерфейса: экрана, различных панелей и т.д. Координаты отсчитываются с левого верхнего угла. Нужная информация выводится в зависимости от переменной id, различные значения которой установлены в модуле appuifw (представлены чуть ниже). Функция доступна только на смартфонах с Symbian 8.1-9.
activate_tab(index) и set_tabs(tab texts)
Используются для создания вкладок на экране приложения. Функции будут рассмотрены позже в отдельной статье.
Итак, все методы (и атрибуты тоже) объекта app мы изучили. Продолжим рассмотрение модуля appuifw и начнем с переменных, которые могут быть присвоены функции app.layout(id).
EScreen
Размер экрана:
>>> appuifw.app.layout(appuifw.EScreen)
((176, 208), (0, 0))
>>>
EApplicationWindow
Часть экрана, доступная для приложений:
>>> appuifw.app.layout(appuifw.EApplicationWindow)
((176, 208), (0, 0))
>>>
EStatusPane
Часть экрана, где находятся общие элементы для приложений — иконка, название, вкладки и т.д.:
>>> appuifw.app.layout(appuifw.EStatusPane)
((176, 44), (0, 0))
>>>
EMainPane
Часть экрана, где располагается главная панель приложений (рабочая область):
>>> appuifw.app.layout(appuifw.EMainPane)
((176, 144), (0, 44))
>>>
EControlPane
Часть экрана, где находится контрольная панель приложений (надписи над левой и правой софт-клавишами):
>>> appuifw.app.layout(appuifw.EControlPane)
((176, 20), (0, 188))
>>>
ESignalPane
Часть экрана, где располагается индикатор уровня сети:
>>> appuifw.app.layout(appuifw.ESignalPane)
((12, 44), (154, 0))
>>>
EBatteryPane
Часть экрана, где находится индикатор уровня заряда батареи:
>>> appuifw.app.layout(appuifw.EBatteryPane)
((12, 44), (0, 0))
>>>
EContextPane
Часть экрана, где находится иконка приложения:
>>> appuifw.app.layout(appuifw.EContextPane)
((44, 44), (12, 0))
>>>
ETitlePane
Часть экрана, где располагается название приложения:
>>> appuifw.app.layout(appuifw.ETitlePane)
((108, 28), (56, 0))
>>>
ENaviPane
Часть экрана, где расположена навигационная панель (вкладки в Настройках, например):
>>> appuifw.app.layout(appuifw.ENaviPane)
((120, 16), (56, 28))
>>>
EFindPane
Часть экрана, где находится панель поиска (в нижней части Контактов, например):
>>> appuifw.app.layout(appuifw.EFindPane)
((176, 31), (0, 157))
>>>
EWallpaperPane
Часть экрана, где расположены обои (на рабочем столе):
>>> appuifw.app.layout(appuifw.EWalpaperPane)
((174, 143), (1, 45))
>>>
EIndicatorPane
Часть экрана, где располагаются индикаторы наличия входящих SMS, включенного Bluetooth, подключенного кабеля, активированного будильника и т.д.:
>>> appuifw.app.layout(appuifw.EIndicatorPane)
((113, 12), (63, 44))
>>>
EAColumn
Часть экрана, которая используется для отображения мелких рисунков и флажков (например, иконки файлов и папок в Диспетчере файлов):
>>> appuifw.app.layout(appuifw.EAColumnPane)
((20, 144), (0, 44))
>>>
EBColumn
Часть экрана, которая используется для отображения списков строк (например, имена файлов и папок в Диспетчере файлов):
>>> appuifw.app.layout(appuifw.EBColumnPane)
((31, 144), (20, 44))
>>>
ECColumn
Часть экрана, которая используется для отображения данных, вводимые пользователем. Пересекается с EDColumn:
>>> appuifw.app.layout(appuifw.ECColumnPane)
((125, 144), (51, 44))
>>>
EDColumn
Часть экрана, которая используется для отображения дополнительных иконок. Пересекается с ECColumn:
>>> appuifw.app.layout(appuifw.EDColumnPane)
((30, 144), (146, 44))
>>>
EStaconTop
Верхняя левая часть панели контроля и статуса при ландшафтной ориентации экрана (только для Symbian 9).
EStaconBottom
Нижняя правая часть панели контроля и статуса при ландшафтной ориентации экрана (только для Symbian 9).
EControlPaneTop
Верхняя левая часть панели контроля при ландшафтной ориентации экрана:
>>> appuifw.app.layout(appuifw.EControlPaneTop)
((176, 20), (0, 188))
>>>
EControlPaneBottom
Нижняя правая часть панели контроля при ландшафтной ориентации экрана (только для Symbian 9).
EStatusPaneTop
Верхняя левая часть панели статуса при ландшафтной ориентации экрана.
>>> appuifw.app.layout(appuifw.EStatusPaneTop)
((176, 44), (0, 0))
>>>
EStatusPaneBottom
Нижняя часть панели статуса при ландшафтной ориентации экрана (только для Symbian 9).
EUniversalIndicatorPane
Часть экрана, где располагаются индикаторы наличия входящих SMS, включенного Bluetooth, подключенного кабеля, активированного будильника и т.д. (только для Symbian 9).
Так, с параметрами функции appuifw.app.layout() разобрались, продолжим дальнейшее изучение:
Text
Объект-поле — для ввода, вывода и редактирования текста.
Listbox
Объект-список — для работы со списком строк.
Form
Объект-форма — используется для вывода информации и настройки приложения.
Canvas
Объект-холст, на котором можно рисовать и выводить на него картинки.
Icon
Объект для работы с изображениями *.mbm.
Content_handler
Объект для открытия файлов различных типов.
Изучим работу с объектами на примере Content_handler. Создается он так:
new_name = Content_handler()
После создания можно использовать два следующих его метода:
open(filename)
Открывает файл, причем в зависимости от его типа запускается соответствующее приложение (например, картинки открываются через просмотрщик изображений). Данное приложение отображается в текущем окне, и после выхода из него работа программы на Python продолжается:
>>> content = Content_handler()
>>> content.open(u’c:\\\\others\\\\image\\\\my_image.jpg’)
open_standalone(filename)
Аналогичен предыдущей функции, но приложение запускается отдельно и независимо от программы Python.
Подробное изучение остальных объектов переносится в отдельные статьи. А сейчас — последняя охапка ценных переменных модуля appuifw:
EEventKeyUp, EEventKeyDown, EEventKey
Переменные, используемые в работе объекта Canvas для контроля нажатий клавиш.
FFormAutoFormEdit, FFormAutoLabelEdit, FFormDoubleSpaced, FFormEditModeOnly, FFormViewModeOnly
Переменные, используемые в работе объекта Form для установки вида элементов формы Form.
STYLE_BOLD, STYLE_ITALIC, STYLE_STRIKETHROUGH, STYLE_UNDERLINE, HIGHLIGHT_STANDARD, HIGHLIGHT_ROUNDED, HIGHLIGHT_SHADOW
Переменные, используемые в работе объекта Text для форматирования текста.
Все эти переменные будут рассмотрены позже, каждый в своей статье.
Великому и могучему посвящается
Существует один тип данных, который является разновидностью строк — строки Unicode (Юникод). Они предоставляют возможность использовать одновременно буквы и символы из нескольких языков, в том числе и русского. Т.е. именно строки Unicode дадут возможность «говорить» вашей программе на родном языке!
Эти строки полностью аналогичны обычным строкам, но начинаются с буквы «u» и содержат управляющие символы, каждый из которых означает один символ:
>>> text = u\'\\u0423\\u0440\\u0430! \\u042f \\u0433\\u043e\\u0432\\u043e\\u0440\\u044e \\u043f\\u043e \\u0440\\u0443\\u0441\\u0441\\u043a\\u043e\\u043c!\'
>>> print text
Ура! Я говорю на русском!
>>>
Я дам таблицу, в которой представлено соответствие между буквами русского алфавита и их управляющими символами. Но также опишу более простой способ, как получить из строки на русском последовательность управляющих символов. Для этого мы используем модуль appuifw. Он содержит функцию query для ввода данных. Устанавливая его второй параметр как «text», мы сможем вводить текстовые данные, при этом обратно функция вернет строку в формате Unicode:
>>> import appuifw
>>> appuifw.query(u’Text:’,’text’)
а \\u0430 л \\u043b ц \\u0446 А \\u0410 Л \\u041b Ц \\u0426
б \\u0431 м \\u043c ч \\u0447 Б \\u0411 М \\u041c Ч \\u0427
в \\u0432 н \\u043d ш \\u0448 В \\u0412 Н \\u041d Ш \\u0428
г \\u0433 о \\u043e щ \\u0449 Г \\u0413 О \\u041e Щ \\u0429
д \\u0434 п \\u043f ъ \\u044a Д \\u0414 П \\u041f Ъ \\u042a
е \\u0435 р \\u0440 ы \\u044b Е \\u0415 Р \\u0420 Ы \\u042b
ж \\u0436 с \\u0441 ь \\u044c Ж \\u0416 С \\u0421 Ь \\u042c
з \\u0437 т \\u0442 э \\u044d З \\u0417 Т \\u0422 Э \\u042d
и \\u0438 у \\u0443 ю \\u044e И \\u0418 У \\u0423 Ю \\u042e
й \\u0439 ф \\u0444 я \\u044f Й \\u0419 Ф \\u0424 Я \\u042f
к \\u043a х \\u0445 К \\u041a Х \\u0425
Так как первые 128 символов Unicode совпадают с кодировкой ASC-II, то необходимость использования управляющих символов для букв латинского алфавита и знаков препинания отпадает.
Как, наверно, уже заметили, большинство функций, написанных специально под систему Symbian (из модуля appuifw, например), принимают и отдают строки Unicode. Даже если там только буквы латинского алфавита, все равно эта строка в начале будет иметь букву «u».
Именно для этих случаев существует функция unicode() для преобразования любых данных, будь то число, список или обычная строка, в строку Unicode. При работе с appuifw он является незаменимым помощником:
>>> number = 5/2
>>> appuifw.note(unicode(number))
>>> list = range(1,4)
>>> appuifw.note(unicode(list))
>>>
Вот теперь мы умеем использовать русский язык в своих программах!
Interface.py: пример (скачать)
Вместе со статьей также идет пример Interface.py, в котором представлена работа большинства функций из модуля appuifw. Просто выбирайте из меню Функции нужный пункт и смотрите результат работы. Не помешает просмотреть сам код, где все, что можно, сделано на русском.
Установка:
— копируйте программу на телефон любым удобным способом;
— открываете его через Диспетчер файлов;
— запустится приложение для установки *.py программ — Python installer;
— выбирайте пункт Python script, программа скопирует файл в рабочую папку (‘!:\\\\system\\\\apps\\\\Python\\\\my’ для Symbian 6-8 и ‘!:\\\\python\\\\’ для Symbian 9);
— теперь программу можно запустить через сам Python (Рис. 22).
Удачи!
DimonVideo
взято из mobiPython на Symbian S60: объекты, создание интерфейса (модуль appuifw) пример Interface.py Точка, точка, запятая...Мы живем в мире объектов, каждый из [...] читать описание
6336
Программирование для смартфонов DimonVideo
Почитал тут, оказывается правильно говорить возвращает, а не показывает)))
Вот его функции:
cenrep.ap_keypad_volume() - возвращает громкость клавиатуры
cenrep.ap_message_alert() - возвращает громкость сообщения*
cenrep.ap_ringing_type() - возвращает тип звукового сигнала вызова
cenrep.ap_ringing_volume() - возвращает громкость звукового сигнала вызова
cenrep.ap_warning_tones() - возвращает предупредительные сигналы*
cenrep.bt_powerstate() - возвращает питание синезуба(BlueTooth)
cenrep.network_connection() - возвращает соединение с инетом*
cenrep.set_ap_keypad_volume() - задать громкость клавиатуры**
cenrep.set_ap_message_alert() - задать громкость для сообщений**
cenrep.set_ap_ringing_type() - задать тип звукового сигнала вызова
cenrep.set_ap_ringing_volume() - задать громкость звукового сигнала вызова**
cenrep.set_ap_warning_tones() - задать громкость предупредительных сигналов*
cenrep.set_bt_powerstate() - задать питание синезуба(BlueTooth) Думаю это одно из самых интересных в этом модуле, в скобках 1 - включить, 0 - выключить, так же *
cenrep.set_network_connection() - задать соединение с инетом** Пригодится для прог, работующих с инетом
cenrep.set_vibra_profile() - задать профиль вибры(на 9ке чёт не фурычит(()
cenrep.vibra_maxtime() - максимальная длительность вибры***
cenrep.vibra_minofftime() - минимальная длительность вибры
cenrep.vibra_profile() - показать профиль вибры(на 9ке чёт не фурычит(()
* 1 - включено(выполненно), 0 - выключенно(не выполненно)
** Значение задается в скобках*
*** в мс
Ещё есть много интересных модулей, постараюсь ещё написать)))
DimonVideo
Описание Модуля cenrepПочитал тут, оказывается правильно говорить возвращает, а не показывает)))Вот его функции:cenrep.ap_keypad_volume() - возвращает громкость [...] читать описание
5589
Для новичков DimonVideo
НИ в коем случае ничего не переименовывать и не изменять на системных дисках(разве по совету профи)
Закрывайте приложения и игры через кнопочку меню-выход.Либо через диспетчер приложений(оперативка не бесконечна!)
Не ставьте больше, чем один антивирус! И будьте внимательны к принимаемым sis файлам(возможно они заражены)! И выключайте блютуз,можете подхватить вирус. -
Не устанавливайте софт не для вашей версии симбиан!
При установке новой программы в обязательном порядке ставьте ее на флеш карту (если в указаниях к программе не указано, что она работает только с карты памяти. (При серьезном сбое системы, вы загрузите смартфон без карты и проблемной программы)
При установке пароля на карту памяти обязательно сохраняйте его, записав отдельно!
Перед форматированием памяти телефона проверьте, не утярян ли пароль. После форматирования пароль невозможно будет восстановить, и карта памяти станет бесполезной.
Не давайте свой смартфон другим людям, особенно детям. Играя с телефоном они могут поставить Вам пароль!
Любой телефон не любит ударов, влаги, прмых солнечных лучей в течении продолжительного времени.
Не допускайте полной разрядки аккумулятора! Система защиты от полного разряда аккумулятора сработав… доставит вам в последствии много неприятных минут .спасибо за внимание nebster01{listtext}
DimonVideo
НИ в коем случае не пытаться полировать стекло или корпус, если у Вас нет опыта в этом очень кропотливом и тщательном процессе!!! (Для защиты [...] читать описание
14402
Для новичков pycmuk
«Холодный» старт («автопоиск») – время, позиция, альманах и эфемериды неизвестны
«Теплый» старт – позиция и эфемериды неизвестны, время и альманах известны
«Горячий» старт («перезахват») – альманах, эфемериды известны, время и позиция известны с некоторой ошибкой
Навигационные сообщения передаваемые со спутников содержат два типа данных – эфемериды и альманах. Спутников. В альманахе передаются параметры орбиты, с помощью которых можно вычислить примерное местоположение спутников с достаточной большой степенью погрешностью. Альманах, хранящийся в памяти приемника, постоянно обновляется, т.к. каждый спутник передает данные альманаха для всех спутников группировки. Время «жизни» альманаха составляет 2-3 месяца. Далее, величина накопленной ошибки в расчетах будет недопустимой.
Данные эфемерид содержат параметры, позволяющие более точно вычислить текущее местоположение спутников. В отличие от альманаха, каждый из спутников передает, только свои собственные эфемериды. Время «жизни» эфемерид не превышает 4-6 часов.
Информация данных эфемерид и альманаха, передаваемой со спутников, постоянно корректируется. Это происходит один раз (а при необходимости и более) в сутки. Сеть наземных станций, получает информацию со спутников, по аналогии с обычными пользователями, анализирует измерения, сравнивает их с опорными, рассчитывает корректирующие поправки и передает их на главную станцию, с которой осуществляется передача данных на спутники.
«Холодный» старт приемника может быть связан не только с его длительным бездействием, но перемещением на большое расстояние в выключенном состоянии. Если первый случай связан с устаревшим альманахом и ошибкой в определении текущего точного времени, то во втором случае приемник, не зная о своем перемещении, будет пытаться найти спутники, которых должны быть видимы на «старом» месте. Пользователь может «помочь» приемнику и уменьшить время «холодного» старта, указав на базовой карте, примерное «новое» местоположение.
Во время «холодного» старта приемник сканирует весь диапазон возможных значений частот и временных задержек навигационных сигналов. При этом, в многоканальных приемниках, несколько каналов могут использоваться для поиска одного спутника, чтобы ускорить время его захвата. После того, как сигнал хотя бы от одного спутника будет получен и разобран, приемник будет иметь полную информацию об альманахе всей группировки и, по сути, перейдет к «теплому» старту
При «теплом» старте, приемник, включенный после 6-и часов бездействия, начнет «поиск» сигналов спутников, используя значение текущего времени и данные, хранящегося в памяти, альманаха. Будет осуществляться поиск только тех спутников, которых, по теоретическим расчетам находятся в видимом полушарии и должны быть доступны приемнику. Соответственно, известен достаточно узкий диапазон частот и временный задержек, который требуется просканировать в процессе поиска сигналов. Эта информация существенно ускоряет время захвата спутников, по сравнению с «холодным» стартом, когда поиск ведется на широком диапазоне всех возможных значений задержек и частот
В приемниках «Garmin» для контроля текущего использования спутников существует страница «Satellites», на которой отображается информация о местоположении спутников и индикатор уровня сигнала. Когда спутник только захвачен, но еще не используется в подсчете позиции, этот индикатор имеет «прозрачный» вид. После того, как эфемериды полностью получены и декодированы, спутник может использоваться в подсчете позиции.
Стоит отметить, что в момент включения, многоканальный приемника начинает поиск сигналов с нескольких спутников одновременно. Информация передаваемая со спутников привязана к единой шкале времени, содержит одинаковую структуру и достигает антенны приемника, примерно в одно и тоже время. Поэтому данные эфемерид, одновременно захваченных спутников, поступят в приемник почти что одновременно. Если количество таких спутников более или равняется трем, то это позволяет приемнику сразу же рассчитать позицию. В случае, когда сигналы блокируются высокими зданиями или густой листвой, то может потребоваться достаточно длительное время на определение позиции.
Наличие полностью полученных эфемерид, не гарантирует использование этого спутник в подсчете позиции. Информация передаваемая в эфемеридах может быть неправильной, ошибочной, либо связанной с неисправностью в работе спутника. В это случае, индикатора «здоровья» передаваемых в данных эфемерид и альманаха, информирует приемник, что сигналы с этого спутника нельзя использовать в подсчете позиции. Это может быть связано не только с неисправностью спутника, но и диагностическими работами проводимыми на его борту, процессом ввода его в эксплуатацию или тестированием новых режимов,.
«Горячий» старт связан с кратковременным выключением приемника (до 6-и часов) не требует длительного времени на определение позиции. Это объясняется тем, что полученные ранее эфемериды содержат «свежие» данные, используемые для определения точных координат спутников и могут использовать в вычислении позиции. В случае включения прибора после порогового времени, эфемериды рассматриваются устаревшими и начинает действовать принцип «теплого» старта. Если на момент включения приемника видимыми остались менее 3-и спутников со «свежими» эфемеридами, то для определения позиции потребуется некоторое время на сбор данных эфемерид нового спутника.
Данные эфемерид передаются в составе трех пакетов. Каждый из пакетов содержит одинаковый временной идентификатор (IOD – issue of data) по которому можно объединить общую информацию. Информация эфемерид передаваемая со спутников каждые 30 секунд, изменяется раз в 2 часа, и содержит одинаковый на это время IOD. Если один из пакетов был пропущен, либо получен с ошибками, то можно выделить аналогичный пакет из следующего сообщения, проверить его идентификатор и не дожидаясь следующих пакетов, использовать его с ранее полученными. Это позволяет приемнику ускорить время «старта».
Существует минимальное возможное время, необходимое приемнику на «старт», и это определяется структурой передаваемого сигнала со спутников. Производители навигационной аппаратуры, используя стандартные методы навигации, могут приблизиться к этому времени, но уменьшить его не смогут. Одним из методов, предназначенных для решения этой проблемы, является Assisted-GPS (A-GPS). Его принцип заключается в вычисление точного местоположения спутников без информации эфемерид, на получении которых требуется время. Вычисление осуществляется на использовании точных моделей орбит спутников, доступных через специальные Интернет - сервисы.
С другой стороны, максимальное время «старта» может значительно превышать заявленное в технической спецификации на навигатор время. Это объясняется окружающими условиями, в которых происходит «захват» спутников и «старт» приемника. Если приемник находится в условиях сильной многолучевости вызванной густой листвой деревьев, или близкорасположенными зданиями, то навигационных сигнал подвергается внешнему воздействию, содержит ошибки и неправильно декодируется. В условиях городских «каньенов», когда над приемником «нависают» высокие здания и виден только небольшой сектор неба, количество спутников доступных для использования резко ограничивается. Более, того геометрический фактор этих спутников, являющийся одним из критериев точно определения позиции, сильно ухудшается. Все эти условия могут значительно увеличить время «старта» приемника.
Все права на статью принадлежат www.gpsportal.ru
pycmuk
Время «старта» необходимое навигационному приемнику на определение позиции после включения, зависит от имеющейся в памяти начальной информации. [...] читать описание
27969
Программирование для смартфонов DimonVideo
pathinfo.digitalsounds_path() - путь к цифровым звукам, результат: u\'С:\\\\Data\\\\Sounds\\\\Diggital\'
pathinfo.games_path() - путь к папке игры, результат: u\'С:\\\\Data\\\\Games\'
pathinfo.gmspictures_path() - путь к папке pictures, результат: u\'C:\\\\Data\\\\Images\\\\Pictures\\\\\'
pathinfo.images_path() - путь к папке images, резудьтат: u\'C:\\\\Data\\\\Images\\\\\'
pathinfo.installs_path() - путь к папке installs, результат: u\'C:\\\\Data\\\\Installs\\\\\'
pathinfo.memorycard_path() - путь к карте памяти, результат u\'E:\\\\\'
pathinfo.mmsbackgroundimages_path() - путь к папке с картинками для ММС сообщений, результат: u\'C:\\\\Data\\\\Images\\\\Backgrounds\\\\\'
pathinfo.others_path() - путь к папке прочее, результат: u\'C:\\\\Data\\\\Others\\\\\'
pathinfo.phone_path() - путь к папке data, результат u\'C:\\\\Data\\\\\'
pathinfo.presencelogos_path() - путь к папке presence, результат: u\'C:\\\\Data\\\\Images\\\\Presence\\\\\'
pathinfo.rom_path() - путь к оперативной памяти, результат: u\'Z:\\\\Data\\\\\'
pathinfo.simplesounds_path() - путь к папке simple, результат u\'C:\\\\Data\\\\Sounds\\\\Simple\\\\\'
pathinfo.videos_path() - путь к папке видео, результат: u\'C:\\\\Data\\\\Videos\\\\\'
Не знаю для чего этот модуль нужен фактически, может кому пригодится)) Если будет не лень, напишу статью по более интересным модулям.
DimonVideo
Вот решил написать статью, про модуль Pathinfo, который выводит пути к стандартным папкам в виде строки в юникоде вида \"С:\\\\Data\\\\Sounds\\\\Diggital\" pathinfo.digitalsounds_path() [...] читать описание
4401
Для новичков DimonVideo
Много раз приходилось слышать о наводнивших рынок так называемых «клонах». Некоторые из подобных моделей имеют другое название и их вполне можно отличить от оригинального телефона, по примеру которого подделка была создана.
Но что если аппарат выполнен в том же стиле, цветовой гамме и на нём написано название какого- нибудь ведущего вендора (чаще всего Nokia)? Естественно, опытному пользователю сотовых телефонов отличить подделку, скорее всего, удастся, но вот обычному покупателю...
Так как же отличить оригинал от подделки?
Логично, что компании, выпускающие подделки, не смогут создать полностью идентичный оригиналу продукт, т. к. невозможно обеспечить достаточное количество контроля работы и самой продукции в целом; они не смогут узнать (лишь по одной купленной модели) всех нюансов сборки и создания тех или иных деталей телефона; не смогут потратить на разработки нужное количество средств. Факты говорят сами за себя - телефон отличить можно!
Попробуем классифицировать возможные отличия:
Внешний вид . Старайтесь ознакомиться с внешним видом телефона заранее. На сайте производителя можно найти подробную информацию о нужной модели сотового телефона, фотографии. Также обращайте внимание на качество и шрифт указателей бренда и номера модели, покраску корпуса, опрятность отдельных деталей дизайна, качество сборки.
Вес . Этот параметр играет немаловажную роль в аппарате, но взвешивать телефон во время покупки, естественно, не стоит. Если в телефоне указана поддержка одновременно нескольких сетей(GSM/UMTS(3G), GSM/CDMA), то Вы должны знать, что телефон будет иметь несколько другой вес, чем возможный аналог с поддержкой стандарта лишь одной сети.
Меню, функциональность , качество перевода . Факт, что все подделки имеют некачественный перевод и многочисленные орфографические ошибки. Функциональность их также заметно отличается от оригинала (в поддельном Nokia N95 отсутствует поддержка сетей третьего поколения и GPS, присутствует сенсорный экран). Меню отображается в совершенно другом виде и только иконки бывают похожи на оригинальные.
Сертификаты проверки продукции . На оригинальном телефоне должны стоять стикеры, подтверждающие прошедшую проверку аппарата (РСТ, ССС). Подделки таких сертификатов либо не имеют, или же они оформлены неграмотно и заметно отличаются от настоящих сертификатов. В этом деле есть одна оговорка - оригинальные аппараты, но завезённые в страну контрабандно (т. е. «серые») таких сертификатов иметь не будут. Как и гарантийного обслуживания производителя.
Место приобретения товара . Этот показатель играет основную роль. Официальные дистрибьюторы и крупные магазины располагают только оригинальными моделями сотовых телефонов, прошедших все уровни государственного контроля и имеющих гарантию производителя. На обычном рынке или базаре такой продукции мало.
Вот и осмотрены основные аспекты в помощь при покупке телефона. Дальнейший выбор будет зависеть только от Вас!
DimonVideo
Вот на просторах инета нашел статью как отличить поддельный тел. От настоящего. Сразу скажу статья для новичков я для себя ниче нового не [...] читать описание
14156
