Вопрос

Я разрабатываю P2P-приложение и следовал руководству здесь и пока я тестировал это на 2 телефонах, я размышлял, когда я должен инициировать обнаружение одноранговых узлов?

Только один раз при запуске приложения, периодически или каждый раз в onResume?

Я спрашиваю, потому что иногда, когда я пытаюсь показать список одноранговых узлов, он не может найти ни одного. Я также хотел бы знать причину этого И что на самом деле представляет собой peer discovery и что оно делает.

Это было полезно?

Решение

Я запускаю обнаружение через слушателей, зарегистрированных в приложении, каждые "x" секунд, и да, вы также хотели бы инициировать обнаружение onResume().Кроме того, я полагаю, вы уже используете широковещательные намерения чтобы определить изменение состояния.

Однако я не могу уточнить внутренние параметры обнаружения P2P, но обнаружение может завершиться неудачей из-за занятости сети, или из-за внутренней ошибки, или просто потому, что устройство не поддерживает P2P, как упоминалось ранее здесь.

Другие советы

mManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() {
        @Override
        public void onSuccess() {
            Toast.makeText(MainActivity.this, "onSuccess", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onFailure(int reasonCode) {

            switch(reasonCode){

            case WifiP2pManager.ERROR:

                Toast.makeText(MainActivity.this, "Getting error while peers discover", Toast.LENGTH_SHORT).show();
                break;

            case WifiP2pManager.P2P_UNSUPPORTED:
                Toast.makeText(MainActivity.this, "Device is not supported", Toast.LENGTH_SHORT).show();
                break;


            case WifiP2pManager.BUSY:
                Toast.makeText(MainActivity.this, "Device is busy", Toast.LENGTH_SHORT).show();
                break;

            }
        }
    });
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top