• 0
Pax Beach

Открытие окна настроек Wi-Fi, Способ определения координат

Вопрос

Коллеги, подскажите пожалуйста, как в Delphi из своего приложения перейти к настройкам устройства Android, в частности Wi-Fi и GPS?

По нажатию кнопки пытаюсь выполнить такой код (нашел по теме на просторах), ничего не происходит ни в отладчике ни на экране. А, по идее, должна открыться Activity «Способ определения координат».

var
  Intent: JIntent;
  WiFIServiceNative: JWifiManager;
begin
  Intent := TJIntent.Create;
  Intent.setClassName(StringToJString('com.android.settings'),
    StringToJString('com.android.settings.widget.SettingsAppWidgetProvider'));
  Intent.addCategory(TJIntent.JavaClass.CATEGORY_ALTERNATIVE);
  Intent.setData(StrToJURI('3'));
  TAndroidHelper.Activity.sendBroadcast(Intent);
...

Вот еще, здесь же пытаюсь программно выключить Wi-Fi — приложение вылетает с ошибкой «...class segmentation fault (11).», в отладчике методы Wi-Fi менеджера выполняются бесконечное количество раз, пока не вылетает указанная ошибка, т.е. нажатие F8 возвращает обратно на ту же строчку выполнения метода.

  WiFIServiceNative := JWifiManager(TAndroidHelper.Activity.getSystemService(TJContext.JavaClass.WIFI_SERVICE));
  if Assigned(WiFIServiceNative) then begin
    memo1.Lines.Add('Has Wifi manager');

    memo1.Lines.Add('Wifi state: ' + IntToStr(WiFIServiceNative.getWifiState));

    memo1.Lines.Add('Try to Wi-Fi off:');
    if WiFIServiceNative.setWifiEnabled(false) then
      memo1.Lines.Add(' - OK')
    else
      memo1.Lines.Add(' - FAIL');

 

Прошу вашей помощи — как правильно работать с настройками Android?

 

Приложение пустое — кнопка и мемо.

Permissions для проекта такие:

    <!-- This is the platform API where NativeActivity was introduced. -->
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />

 

Изменено пользователем Pax Beach

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

8 ответов на этот вопрос

  • 0
32 минуты назад, Pax Beach сказал:

Коллеги, подскажите пожалуйста, как в Delphi из своего приложения перейти к настройкам устройства Android, в частности Wi-Fi и GPS?

 

 

Kitty понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
4 часа назад, Rusland сказал:

Этот способ открывает форму настроек «Местоположение». Уже не плохо, спасибо!

Но я искал, как перейти сразу в окно «Способ определения координат». Не уверен, правда, что это возможно.

Изменено пользователем Pax Beach

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Выключить WiFi:

uses
  Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Net.Wifi;

procedure TForm1.Button1Click(Sender: TObject);
var
  WiFIServiceNative: JWifiManager;
begin
  WiFIServiceNative := TJWifiManager.Wrap
    (TAndroidHelper.Context.getSystemService(TJContext.JavaClass.WIFI_SERVICE));
  WiFIServiceNative.setWifiEnabled(false);
end;

 

Pax Beach и Kitty понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
2 часа назад, Andrey Efimov сказал:

Выключить WiFi:


uses
  Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Net.Wifi;

procedure TForm1.Button1Click(Sender: TObject);
var
  WiFIServiceNative: JWifiManager;
begin
  WiFIServiceNative := TJWifiManager.Wrap
    (TAndroidHelper.Context.getSystemService(TJContext.JavaClass.WIFI_SERVICE));
  WiFIServiceNative.setWifiEnabled(false);
end;

 

Большое спасибо. Это решает проблему включения/выключения Wi-Fi.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Сделал пример в одном проекте включения/выключения Wi-Fi, переход к настройкам местоположения и опрос статуса датчика location.

Качайте, кому нужно.

 

TestWifi.zip

Rusland, Kitty, Alex Bozhko и 1 другому понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Приветствую, а есть способ запускать точку доступа? Без вызова окна настроек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
Только что, I PL сказал:

Приветствую, а есть способ запускать точку доступа? Без вызова окна настроек.

Наверняка.

Надо читать на портале разработчиков

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Похожие публикации

    • Автор: Роман Фил
      Привет Всем уважаемые! 
      Пытаюсь сделать растягивание по содержимому компонента. Как это реализовано в мессенджерах типа WhatsApp если большой текст то растягивает (выделяется) по содержимому большое поле, если короткий то малое. 
        Text2.Text := Memo1.Lines.Strings[4];   text2.Height := canvas.TextHeight(Text2.Text); //по высоте строки меняется т.к. там и есть одна строка в TText просто переносится WordWrap визуально.   text2.Height:=canvas.TextWidth(text2.Text); //  - так чушь  Как это вообще реализовано кто нибудь сталкивался?

    • Автор: Роман Фил
      Привет ребят! Помогите кто знает, попытаюсь доходчиво объяснить - 
      имеется набор компонентов KernowSoftwareFMX - в нем использую TksTableView для вывода данных с Tmemo, в нем так же есть Image.
      В Tmemo с сервера грузится файл txt внутри которого строки с ссылками на изображения вида http://бла-бла/1.png
      Для загрузки использую FMX.Features.Bitmap.Helpers.pas - позволяет по прямой ссылке загружать изображение в TImage.
      что пытаюсь сделать?
      Нужно наполнять список TksTableView с Memo содержащий ссылки и в строках TksTableView - они же ListItem тоже самое что в ListView  и загружать в image каждой строки картинки по ссылкам memo.
       
      AItem.Image.Bitmap := Image4.MultiResBitmap.Bitmaps[1].LoadFromUrl(Memo1.Lines.Strings[i]); - так ругается [DCC Error] untMain.pas(92): E2010 Incompatible types: 'TBitmap' and 'procedure, untyped pointer or untyped parameter' AItem.Image.Bitmap := Image4.Bitmap.LoadFromUrl(Memo1.Lines.Strings[i]); - так тожн не работает Глюк в том что первым делом создаются строки . а потом грузятся по очереди картинки в Image4.
      Как заставить подгружать картинки в  TksTableView?
      Как ожидать хавершения загрузки каждой картинки в Image4 и после создавать AItem.Image.Bitmap?
       
       
       
    • Автор: Роман Фил
      Всем привет пытаюсь грузить файлы изображения с телефона Android на сервер методом post запроса. Для этого один из параметров запроса должен содержать полный путь к файлу. В ActionList есть стандартная опция TakePhotoFromLibraryAction - к с нее выдрать путь??? Куда он ей передается и передается ли вообще? я и справки толком не нахожу или я слепой?
       
      imgfile.Text:=TakePhotoFromLibraryAction1.????  
    • Автор: Роман Фил
      Привет ребят, созрел такой вопрос который меня мучает ! Вобщем пытаюсь загрузить картинку по прямой слыке с сервера. Картинка не грузится, не сохраняется не отображается. 
      Конечная платформа - Андроид. Пишу на Delphi xe 10 seatle.
      Что я делаю? при нажатии на сам компонент TImage (созданный динамически), должна грузится картинка по адресу преждевременно записанное в hint (TImage) при создании вида (http://блаблабла.jpg)
      Раньше код ниже работал сейчас нет не пойму что не так. Почему стал ковырять? потому что форма встает колом при загрузке изображений.
       
      var s: string; fs: TFileStream; begin fs := TFileStream.Create(tpath.Combine(tpath.GetDownloadsPath, 'load.jpg'), fmCreate); NetHTTPClient1.Get((Sender as TImage).Hint, fs); fs.Free; (Sender as TImage).MultiResBitmap.Bitmaps[1].LoadFromFile (tpath.Combine(tpath.GetDownloadsPath, 'load.jpg')); подключал еще pas нашел на этом форуме FMX.Features.Bitmap.Helpers.pas
      (Sender as TImage).MultiResBitmap.Bitmaps[1].LoadFromUrl ((Sender as TImage).Hint); как проще сделать посоветуете чтоб и грузилось и форма не висла?
    • Автор: Rionn
      В этой ссылке показан пример работы в одной сети (написано курсивом). Не могу найти, чтобы PC работал по сети или по WiFi, а телефон по мобильным данным. Не подскажете?
    • Автор: Роман Фил
      ПРивет, есть ли возможность узнать как то номер сроки в memo на delphi FMX в memo при нажатии на текст в поле memo?

      для windows на vlc можно memo.CaretPos.Y либо через WinAPi заголовки. Как такое делать в FireMonkey FMX для андроид ума не приложу. Может кто делал, поделится опытом?
    • Автор: Роман Фил
      Привет ребята! Вобщем есть текст в Memo с которого нужно брать строки с конца файла т.е. memo.lines.count-1 в цикле, 
      после этого создавая отельно динамически компоненты,  заносить текстовые  строки с memo в эти созданные динамически компоненты, ниже пример:
      procedure TVKBaseForm.Button2Click(Sender: TObject); var rec: TRectangle; txt: Ttext; i: word; // - можно и integer сути не поменяет begin for i := Memo1.Lines.Count - 1 downto 0 do begin rec := TRectangle.Create(Self); rec.Parent := MainLayout1; rec.Height := 15; rec.Align := TAlignLayout.Top; txt := Ttext.Create(Self); txt.Parent := rec; txt.Align := TAlignLayout.Client; txt.Text := Memo1.Lines.Strings[i]; end; end; Работает, но не правильно. Почему выдает не правильный порядок при выводе? почему создает сначала первый файл? Почему создает не все? Может есть какая-то синхронизация? 
      Пробовал так же
      A: integer; begin A := 1; // Присваеваем единицу While A <> Memo1.Lines.Count - 1 do begin A := A + 1; s := Memo1.Lines.Strings[A]; Application.ProcessMessages; rec := TRectangle.Create(Self); rec.Parent := MainLayout1; rec.Height := 15; rec.Align := TAlignLayout.Top; txt := Ttext.Create(Self); txt.Parent := rec; txt.Align := TAlignLayout.Client; txt.Text := s; Помогите разобраться
    • Автор: Роман Фил
      Доброе время суток .
      Я только начал знакомится с потоками , не судите меня строго .
      Вот код . Смысл которого через отдельный поток загружать текст с сервера и отображать в memo. Что я делаю? На сервере из вне имеется файлкоторый по api запросам пополняется. Его нужно в потоке постоянно выводить в memo. подгружать каждый раз. При использовании на win вес работает, на андроид не качает и не сздает файл в чем может быть проблема?
      type ThreadHTTP = class(TThread) private public Stream: TMemoryStream; i: integer; procedure Execute; override; procedure ShowResult; end; {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := true; end; procedure TForm1.Timer1Timer(Sender: TObject); var MyHTTP: ThreadHTTP; begin ProgressBar1.Value := 0; MyHTTP := ThreadHTTP.Create(False); end; { ThreadHTTP } procedure ThreadHTTP.Execute; var j: integer; begin inherited; i := 0; j := 0; Stream := TMemoryStream.Create; Form1.IdHTTP1.Get('http://сайт/base.txt', Stream); Form1.ProgressBar1.Max := Stream.Size; while j <= Stream.Size do begin inc(i); Synchronize(ShowResult); inc(j); Form1.ProgressBar1.Value := Form1.ProgressBar1.Value + 1; end; Stream.SaveToFile(tpath.getdownloadspath + '/base.txt'); Form1.Memo1.Lines.LoadFromFile(tpath.getdownloadspath + '/base.txt'); Stream.Free; end; procedure ThreadHTTP.ShowResult; begin Form1.Label1.Text := IntToStr(i) + ' kbs'; end;  
    • Автор: Sashar333
      Здравствуйте!
      Есть замечательная русская программа ТЕХТРАН: http://www.tehtran.com/nestf.html
      Мне нужен максимум такой же - минимум что предложите алгоритм (раскладки деталей на листе) работы в DELPHI что бы я его мог сам в дальнейшем исправлять и доделывать
      ТРЕБУЕТСЯ ТОЛЬКО АЛГОРИТМ ЗАПОЛНЕНИЯ ПРЯМОУГОЛЬНИК ОПРЕДЕЛЕННЫМИ КОНТУРАМИ, вся программа ТЕХТРАН у меня уже есть.
      Будут входные данные:
      Минимум это простейшие фигуры:размеры прямоугольников и окружностей - максимум это фигуры сложной формы в формате DXF(AutoCad) и их количества(примерно безгранично) для каждой фигуры будут параметры: Размеры(для простейших это толщина,ширина и длина; для DXF это толщина и файл DXF) - все в миллиметрах Кол-во (шт) Размер листа прямоугольный(пример: 10х1500х6000мм, 5х2000х3000мм, 100х100х3000мм) и их кол-во, скажет так первое значение  это толщина, второе - ширина, третье - длинна. Разрешенные расстояния между фигурами и от края листа до фигур - все в миллиметрах Кол-во данных должно быть примерно безгранично
      На выходе надо получить требуемое-подходящее минимальное кол-во листов для всех фигур!
      Ну и соответственно визуализировать результат например на TImage

      Это не полное техзадание, но сколько примерно это будет стоить?
      Хотелось бы использовать это модуль на всех платформах, но как минимум это Windows.
      Заранее спасибо!
       
    • Автор: x11
      Посмотрел это видео
       
      https://youtu.be/iM9lamNwmtc?t=20m51s
       
      Там же просто копипастинг. Чтобы подключить ещё 2-5-10 стилей, нужно заниматься копипастой. Именовать/переименовывать.
      Разве так можно?
      А нельзя как-то автоматизировать процесс добавления стилей в список, где их может выбирать пользователь в процессе работы?
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу