El archivo no se está transfiriendo en la API de smack

Estoy desarrollando una aplicación de chat en la que necesito dar soporte a la transferencia de archivos. Para esto estoy usando Smack API. Pero mi archivo no está siendo transferido y estoy recibiendo elFile status Error yprogress 0.0
He buscado en Google en la red pero todos se utilizan de la misma manera para enviar el archivo. pero estoy recibiendo el error.
Sé que hay un par de preguntas con respecto a este problema pero no se da una solución adecuada.

Entonces, ¿hay alguien que tenga idea de esto? ¿Cómo resolver este problema?

Editar:

He intentado cambiar el127.0.0.1 a10.0.2.2, y ahora tengo el estado es Negociación pero después de algunos intentos obtuve el estado Error.

Aquí está mi código para la transferencia de archivos:

ServiceDiscoveryManager sdm = ServiceDiscoveryManager
                        .getInstanceFor(connection);
                if (sdm == null)
                    sdm = new ServiceDiscoveryManager(connection);
                sdm.addFeature("http://jabber.org/protocol/disco#info");
                sdm.addFeature("http://jabber.org/protocol/disco#item");
                sdm.addFeature("jabber:iq:privacy");
                Log.i("send file", "send file");
                FileTransferManager manager = new FileTransferManager(
                        connection);
                FileTransferNegotiator.setServiceEnabled(
                        connection, true);
                OutgoingFileTransfer transfer = manager
                        .createOutgoingFileTransfer("[email protected]/Smack");
                Log.i("transfer file",
                        "outgoingfiletransfer is created");
                try {
                    OutgoingFileTransfer.setResponseTimeout(30000);
                    transfer.sendFile(
                            new File(path_file+"/"+"andr.jpeg"),
                            "Description");
                    Log.i("transfer file", "sending file");

                    Log.i("transfer file","the path is :"+path_file+"/"+"andr.jpeg");
                    while (!transfer.isDone()) {
                        try {
                            Thread.sleep(1000);
                            Log.i("transfer file",
                                    "sending file status :- "
                                            + transfer.getStatus()
                                            + " "
                                            + "progress:-"
                                            + transfer
                                                    .getProgress());
                            if (transfer.getStatus() == org.jivesoftware.smackx.filetransfer.FileTransfer.Status.error) {
                                transfer.cancel();
                                Log.e("", "ERROR");
                                break;
                            }
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            Log.e("catch", "catch" + e);
                            e.printStackTrace();
                        }
                    }
                } catch (XMPPException e) {
                    // TODO Auto-generated catch block
                    Log.e("catch", "catch" + e);
                    e.printStackTrace();
                }
                Log.i("transfer file", "--------");
            }

Cualquier ayuda y sugerencia será apreciada.

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta