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

KazakOFF

Пользователи
  • Постов

    7
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные KazakOFF

  1. В 30.11.2021 в 08:15, OnePeople сказал:

    Нашел времени немного, у себя сделал так, нахожу все сети, заполняю ими ListView, при нажатии на item вызываю ConnectToWifi(ssid, bsid, password: String) а вы какой хотите велосипед такой и изобретайте

    1.JWifiNetworkSpecifier = interface(JObject) оставляем!

    2.

    procedure ConnectToWifi(ssid, bsid, password: String);
      var
        ConnectivityManagerNative: JObject;
        ConnectivityManager: JConnectivityManager;
        NetworkRequest_Builder: JNetworkRequest_Builder;
        NetworkRequest: JNetworkRequest;
        WifiNetworkSpecifier: JWifiNetworkSpecifier;
        WifiNetworkSpecifier_Builder: JWifiNetworkSpecifier_Builder;
        WiFicallback: JConnectivityManager_NetworkCallback;
      begin
      WifiNetworkSpecifier := TJWifiNetworkSpecifier_Builder.Create
                        .setSsidPattern(TJPatternMatcher.JavaClass.init(StringToJString(ssid), TJPatternMatcher.JavaClass.PATTERN_PREFIX))
                        .setBssid(TJMacAddress.JavaClass.fromString(StringToJString(bsid)))
                        .setWpa2Passphrase(StringToJString(password))
                        .build();
    
      NetworkRequest := TJNetworkRequest_Builder.Create
                        .addTransportType(TJNetworkCapabilities.JavaClass.TRANSPORT_WIFI)
                        .removeCapability(TJNetworkCapabilities.JavaClass.NET_CAPABILITY_INTERNET)
                        .setNetworkSpecifier( TJNetworkSpecifier.Wrap((WifiNetworkSpecifier as ILocalObject).GetObjectID))
                        .build();
    
      WiFicallback := TJConnectivityManager_NetworkCallback.JavaClass.init;
    
      ConnectivityManagerNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE);
      connectivityManager := TJConnectivityManager.Wrap((ConnectivityManagerNative as ILocalObject).GetObjectID);
    
      connectivityManager.requestNetwork(NetworkRequest, WiFicallback);
    end;

    3. WiFiCallBack это обратный вызов - это класс Java, поэтому вам нужно создать потомка и реализовать необходимые методы. В настоящее время это невозможно сделать в Delphi (хотя listner'ы отлично реализуются), поэтому вам нужно будет сделать это на Java. В коде Java вы можете объявить интерфейс, который может быть передан классу, как в этом примере:

    https://github.com/DelphiWorlds/Kastri/blob/master/Features/Connectivity/DW.Connectivity.Android.pas

     https://github.com/DelphiWorlds/Kastri/tree/master/Java/Base/Connectivity

    Добрый день, а вас не затруднит выложить полностью рабочий проект? 

     

  2. Добрый день столкнулся тоже с этой проблемой но ваш метод не подходит.

       CallInUIThread(
        procedure
        var
          DM: JDisplayMetrics;
          VideoView: JVideoView;
          //Container: JRelativeLayout;
          //param: JRelativeLayout_LayoutParams;
          NativeLayout: JNativeLayout;
        begin
          DM := GetJDisplayMetrics;
          VideoView := TJVideoView.JavaClass.init(SharedActivity);
          VideoView.setMinimumWidth(DM.widthPixels);
          VideoView.setMinimumHeight(DM.heightPixels);
          VideoView.setVideoPath(StringToJString('http://clips.vorwaerts-gmbh.de/VfE_html5.mp4'));
          VideoView.requestFocus();
          VideoView.start();
          RelativeLayout := JRelativeLayout.JavaClass.init(SharedActivity, MainActivity.getTextEditorProxy.getWindowToken);
          NativeLayout.SetPosition(10, 10);
          NativeLayout.SetSize(300, 300);
          NativeLayout.SetControl(VideoView);
          NativeLayout.SetFocus(true);
        end);

     

  3. В 01.10.2014 в 12:01, Gor777 сказал:

    Судя по всему XE6 и XE7 не поддерживают статическую загрузку библиотек.

    Работает только динамическая загрузка  :(

    Пример из BASS работоспособен и проверен    

        DocDir := IncludeTrailingPathDelimiter(System.IOUtils.TPath.GetLibraryPath);    //* BASS
        BASSLibraryHandle := LoadLibrary(PChar(DocDir + 'libbass.so'));
        if BASSLibraryHandle = 0 then begin
           ShowMessage( 'libbass.so load FAIL');
        end;
        if BASSLibraryHandle <> 0 then begin
            @BASS_Init := GetProcAddress(BASSLibraryHandle, ('BASS_Init'));
            @BASS_StreamCreateFile := GetProcAddress(BASSLibraryHandle, ('BASS_StreamCreateFile'));
            @BASS_ChannelPlay := GetProcAddress(BASSLibraryHandle, ('BASS_ChannelPlay'));
            @BASS_FXGetParameters := GetProcAddress(BASSLibraryHandle, ('BASS_FXGetParameters'));
            Result := True;
        end;

    Хотя в хелпе этот способ заявлен как Dynamic Loading (Windows-only) ....

    Какой нужно указывать Remote patch в Deployment?

×
×
  • Создать...