Перейти к содержанию
Fire Monkey от А до Я
  • 0

Принудительный мобильный и-нет при WiFi


Марс

Вопрос

Здравствуйте. Подскажите, возможно ли использовать мобильный интернет в то время, когда устройство подключено по WiFi (но у WiFi нет интернета).

Для простоты понимания - есть электронные весы, с WiFi точкой доступа, смарт подключается к точке доступа, софт считывает показания. WiFi интернет не раздает )

Приложению нужно отправить по TCP на внешний сервер порцию данных. В данный момент приходится делать очередь оффлайн-сообщений, и отправлять при пропадании WiFi.

 

Возможно заставить одновременно это работать?

 

И второй вопрос: есть ли в FMX что-то типа старых добрый сокетов winsock2? Чтобы можно было организовать простую последовательность send/recv/send ... с таймаутом на коннект и чтение?

А то приходится через 

Client:=TIDTCPClient.Create(nil) ;

Client.ConnectTimeout:=4000;
Client.ReadTimeout:=2000;

Client.IOHandler.Write ..

 

А чтение через цикл делать

while Ok and (readed<Size) and (b<>$0a) and (b<>$0d)  do begin
try    
b:=Client.IOHandler.ReadByte;
except
OK:=false;

end;

if ok then  begin  PByte(ULONG_PTR(pMem) + readed )^ :=b;
            inc(readed);
            end;
             end;

 

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Одновременная работа Wifi и мобильной сети возможна. Но лично мне не удалось заставить их так работать )  Смысл в включении режима HIPRI.

Вот код, может разберетесь почему не работает. Если удастся заставить работать, то напишите, будет интересно узнать где я ошибся.

Если не получится, то вы можете отключать wifi на телефоне, отправлять данные по включившемуся мобильному интернету, и опять включать wifi.

unit UnitFormMain;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNIBridge,
  Androidapi.JNI.Net, FMX.WebBrowser;

type
  TFormMain = class(TForm)
    WebBrowser: TWebBrowser;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    function GetConnectivityManager: JConnectivityManager;
  public
    { Public declarations }
  end;

var
  FormMain: TFormMain;

implementation

{$R *.fmx}

procedure TFormMain.FormCreate(Sender: TObject);
var
  ConnectivityManager : JConnectivityManager;
begin
  ConnectivityManager:=GetConnectivityManager;
  ConnectivityManager.setNetworkPreference(TJConnectivityManager.JavaClass.TYPE_MOBILE);
  ConnectivityManager.startUsingNetworkFeature(TJConnectivityManager.JavaClass.TYPE_MOBILE, StringToJString('enableHIPRI'));
  Sleep(3000);
  if ConnectivityManager.getActiveNetworkInfo.isConnected then
    WebBrowser.Navigate('https://whoer.net/ru');
end;

function TFormMain.GetConnectivityManager: JConnectivityManager;
var
  ConnectivityServiceNative: JObject;
begin
  ConnectivityServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE);
  if not Assigned(ConnectivityServiceNative) then
    raise Exception.Create('Could not locate Connectivity Service');
  Result := TJConnectivityManager.Wrap(
    (ConnectivityServiceNative as ILocalObject).GetObjectID);
  if not Assigned(Result) then
    raise Exception.Create('Could not access Connectivity Manager');
end;
end.

По поводу второго вопроса - с весами (терминалами и т.п.) проще работать в строчном режиме. Хотя на вкус и цвет...

if FIdTCPClient.IOHandler.CheckForDataOnSource(FTimeouts.ReadTimeout) then
  ASendingData.Value:=FIdTCPClient.IOHandler.ReadLnWait;

 

Ссылка на комментарий
  • 0

У меня на 7 Андроиде ругается при вызове

JManager.startUsingNetworkFeature(TJConnectivityManager.JavaClass.TYPE_MOBILE, StringToJString('enableHIPRI '));

java.lang.UnsupportedOperationException: This method is not supported in target SDK version 23 and above.

Что в переводе означает, что на мобилах с 6 и выше андроидом фишка не работает?

Компилил с 23, 23 и 24 SDK.. Лишний пробел после enableHIPRI роли не играет..

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...