-
Постов
32 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Pavel M
-
-
Как получить уровень приема сотовой сети?
Google пользоваться умею, а вот отсутствие опыта дает о себе знать.
Буду благодарен за ссылки, что почитать для общего понятия написания по android c учетом специфики Delphi.
Нашел:
TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); int dbm = 0; if ( tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE){ dbm = Integer.parseInt(parts[8])*2-113; } else{ if (signalStrength.getGsmSignalStrength() != 99) { int intdbm = -113 + 2 * signalStrength.getGsmSignalStrength(); dbm = Integer.toString(intdbm); } }
public static final int LISTEN_SIGNAL_STRENGTHAdded in API level 1This constant was deprecated in API level 7.
by LISTEN_SIGNAL_STRENGTHSListen for changes to the network signal strength (cellular).
Requires Permission: READ_PHONE_STATE
See AlsoConstant Value: 2 (0x00000002)
Вот что пытаюсь сделать:
function GetLevel: string; var TelephonyObj: JObject; TelephonyManager: JTelephonyManager; Listner: JPhoneStateListener; begin TelephonyObj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); TelephonyManager := TJTelephonyManager.Wrap((TelephonyObj as ILocalObject).GetObjectID); Listner := TelephonyManager.listen(Listner, 2); result := JStringToString(Listner.toString); //ПОЛАГАЮ ПОЛУЧУ НАЗВАНИЕ КОМПОНЕНТА ВМЕСТО РЕЗУЛЬТАТА??? )) end;
Пытаюсь и вот так
function GetSim1Level: integer; var TelephonyObj: JObject; TelephonyManager: JTelephonyManager; cellinfogsm: JCellInfoGsm; CellSignalStrengthGsm: jcellSignalStrengthGsm; Level: integer; begin TelephonyObj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); TelephonyManager := TJTelephonyManager.Wrap((TelephonyObj as ILocalObject).GetObjectID); cellinfogsm:= (TelephonyManager.getAllCellInfo.get(0) as JCellInfoGsm); CellSignalStrengthGsm := cellinfogsm.getCellSignalStrength(); Result := cellSignalStrengthGsm.getLevel; end;
В на выходе конечно же получаю ошибку...
Как я понимаю тут надо создать какой то ресивер?
Он используется постоянно и вызываетя при событии описываемой в Delphi процедурой?
Или к нему разовый доступ и получение текущей информации при обращении к его свойствам?
Прошу больше помочь не готовым кодом, а что почитать. Поскольку есть желание понять.
-
Ещё актуально.
Почему ListBoxItem переносится в TreeView?
Можно конечно делать в TFormMain.TreeRazdelDragDrop костыль
(Data.Source as TListBoxItem).Visible := False;
но это же не выход?
-
Добрый день!
TreeRazdel (TTreeView) отражает разделы с подкатегориями
ListDocs (TListBox) отражает элементы выбранной категории
Необходимо перемещение элементов ListDocs по категориям (с изменениями в БД)
Включаю AllowDrag для ListDocs и TreeRazdel.
procedure TFormMain.TreeRazdelDragDrop(Sender: TObject; const [Ref] Data: TDragObject; const [Ref] Point: TPointF); begin if Data.Source is TListBoxItem then begin idRazdel := TreeRazdel.ItemByPoint(Point.X,Point.Y).Tag; idDocs := (Data.Source as TListBoxItem).Tag; //(Data.Source as TListBoxItem).Free; - ДАЁТ ОШИБКУ if (idRazdel > 0) and (idDocs >0) then MoveDocs(idDocs, idRazdel); //процедура перемещения элемента в другой раздел end; end;
Проблемы:
1) Элементы ListBox реально переносятся в TTreeView (как их сразу же уничтожать?)
2) При перемещении в свободное место TTreeView (не в категорию) - ошибка
3) При включении у TTreeView DragMode := dmAutomatic не возможно выбрать его элементы.
-
Надо использовать Self.DataSet.FieldByName('Фамилия').Text
-
Вывожу в ListBox содержимое таблицы.
В основной текст хочу вывести 3 поля, а в заголовок Lookup значение (таблицы-справочника).
Для Item.Text выставляю
CustomFormat: Owner.FieldByName('Фамилия').Text+' '+Owner.FieldByName('Имя').Text+' '+Owner.FieldByName('Отчество').Text
ПОКА ВСЁ РАБОТАЕТ НОРМАЛЬНО
Показывает список как надо - полные "Фамилия Имя Отчество" для каждой записи.
Если на Header забросить поле ID_должность (числовое) оно прекрасно отображается в ListBox.
Но задача привязать значение из справочника.
Как только добавляю дополнительное поле Lookup в таблицу (TFDQuery->Fields Editor->New field->Lookup ... )
у меня перестает работать ФИО - выдает значение "()"
т.е. как только я добавляю поля или создаю новые весь LiveBindings теряет доступ к
Self.Owner.FieldByName(....)
.
если в CustomFormat написать:
%s+' '+Owner.FieldByName('Имя').Text+' '+Owner.FieldByName('Отчество').Text
Выводит: "Фамилия ()"
Как обращаться к полям в CustomFormat когда они добавление через Fields editor?
-
Пытаюсь познакомиться с FMX и найти как исполнить то что на VCL было очень просто:
(база mdb)
Добавлял DBGrid подключал источником таблицу, одно поле создавал вручную (отражал его на гриде - в нем Lookup подгружал текстовые названия из другой таблицы, связаны по ID) в итоге при редактировании прямо на гриде выпадающий комбобокс. Выбирам из него текстовые данные и в начальной таблице прекрасно менялся числовой ID хотя визуально выбираешь текст из второй таблицы.
В FMX подключил отражение таблицы на Grid через LiveBindings так же создал поле lookup из второй таблице, ID скрыл. НО ни какого ComboBox конечно же нет, и редактировать это поле я вообще не могу.
Я думаю надо делать отдельный комбобокс но как показывать текст из справочника (второй таблицы), а передать ID в первую?
Я понимаю что можно ручками, событиями и SQL..., а можно ли это сделать LiveBindings без тонн кода?
Получить уровень сигнала GSM/LTE
в Использование Android API
Опубликовано · Изменено пользователем pvmmpv
Спасибо.
Меня интересует именно уровень приема от вышки (не тип или скорость интернета).
А больше интересует как где рашририть свои знания как пользоваться сайтом android.developer - покупать книжку по программам под студию, изучить и тогда пытаться на родном Delphi?