Как использовать API WifiNetworkSpecifier для подключения и переключения между локальными сетями Wi-Fi.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как использовать API WifiNetworkSpecifier для подключения и переключения между локальными сетями Wi-Fi.

Сообщение Anonymous »

В настоящее время я учусь создавать приложение с помощью Android Studio, в котором я хочу подключиться к определенному Wi-Fi (без Интернета) для связи с моей текущей настройкой ESP32. Я также хочу иметь возможность переключаться на второй Wi-Fi ESP и иметь между ними загрузочные экраны. Я создал кнопку, которая, как я проверил, работала (и не привела к сбою приложения), а затем просмотрел документацию API WifiNetworkSpecifier ( https://developer.android.com/reference ... er.Builder #build() ), так как это, кажется, способ сделать это.
Теперь я, по сути, просто использовал их пример кода, удалил переопределение (поскольку «литерал» не мог быть разрешен и просто использовал @Override «не переопределяет метод из своего суперкласса»), и теперь нажатие кнопки приводит к сбою приложения. Вот моя основная деятельность:

Код: Выделить всё

package com.example.myapplication;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.net.NetworkSpecifier;
import android.net.wifi.WifiNetworkSpecifier;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button aaaa = findViewById(R.id.aaa);

}

public void btn_click(View v) {

final NetworkSpecifier specifier =
new WifiNetworkSpecifier.Builder().setSsid("EPS32-Webserver")
.setWpa2Passphrase("123456789")
.build();

final NetworkRequest request =
new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(specifier)
.build();

Context context = this;
final ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);

final ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {

};
connectivityManager.requestNetwork(request, networkCallback);

}

}
Я также предоставил эти разрешения в манифесте: Вероятно, в этом нет ничего сложного, но я просто еще недостаточно знаком со студией Android и Java, поэтому буду благодарен за любую помощь. Я также попробовал код из этого поста (Как программно подключиться к другой сети Wi-Fi на уровне API Android 29 и выше (>= 29)), но это просто удерживало меня в цикле подключения даже с правильным ssid, парольной фразой и безопасностью. стандарт. Кроме того, если есть лучший API для того, что я пытаюсь сделать, я открыт для обратной связи.

Подробнее здесь: https://stackoverflow.com/questions/781 ... ocal-wifis
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»