Мне нужно использовать для моего приложения WiFi Direct, и я нашел Демо Google, но ему нужно много и много изменений. Первая проблема, с которой я столкнулся, заключается в том, что я не могу сделать автоматическое сканирование приложений для устройств, потому что есть фрагменты повсюду и каждый раз, когда я пытаюсь создать бесконечный цикл с Runnable и поместить этот цикл во второй поток, так что поток пользовательского интерфейса может быть свободным для запуска его сбоев. Можете ли вы указать мои ошибки и помочь мне удалить кнопку сканирования?Google Direct WiFi Demo удаляет кнопку обнаружения
Код, который я считаю, включает в себя кнопку является ниже:
case R.id.atn_direct_discover:
if (!isWifiP2pEnabled) {
Toast.makeText(WiFiDirectActivity.this, R.string.p2p_off_warning,
Toast.LENGTH_SHORT).show();
return true;
}
final DeviceListFragment fragment = (DeviceListFragment) getFragmentManager()
.findFragmentById(R.id.frag_list);
fragment.onInitiateDiscovery();
manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Toast.makeText(WiFiDirectActivity.this, "Discovery Initiated",
Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int reasonCode) {
Toast.makeText(WiFiDirectActivity.this, "Discovery Failed : " + reasonCode,
Toast.LENGTH_SHORT).show();
}
});
return true;
И здесь также:
public void onInitiateDiscovery() {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
progressDialog = ProgressDialog.show(getActivity(), "Press back to cancel", "finding peers", true,
true, new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
}
});
}
Я пробовал много вещей, но я думаю, что я очень близко с чем-то вроде это:
Runnable myRunnable = new Runnable() {
@Override
public void run() {
while (testByte == 0) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
myRunnable = new Runnable() {
@Override
public void run() {
final DeviceListFragment fragment = (DeviceListFragment) getFragmentManager()
.findFragmentById(R.id.frag_list);
fragment.onInitiateDiscovery();
manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Toast.makeText(WiFiDirectActivity.this, "Discovery Initiated",
Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int reasonCode) {
Toast.makeText(WiFiDirectActivity.this, "Discovery Failed : " + reasonCode,
Toast.LENGTH_SHORT).show();
}
});
}
});
}
}
, а затем добавить:
Thread myThread = new Thread(myRunnable);
myThread.start();
Я извиняюсь за код, потому что он писал очень грязным и за длинный пост, как хорошо, но я хотел быть ясно
Итак, чтобы получить это право, вы хотите получить ребро кнопки открытия и создать бесконечный цикл, чтобы приложение могло автоматически сканировать? – zETO
Да, это именно то, что я пытаюсь сделать, если вы хотите посмотреть здесь весь демо-код google: [Демо Google] (https://github.com/ahmontero/wifi-direct-demo/tree/master/src/com/example/android/wifidirect) –