Initialisieren der bluetooth-Verbindung, android(client) python(server) auf dem pc

Ich bin versucht, senden Sie eine "helloWorld" (nur ein string) von meinem android-Handy(samsung galaxy s2) ein python-script auf meinem pc mit linux. Aber ich kann nicht ankommen es zu wirken. Unten sind die Codes für die android-app(client) und das python-Skript(server). Die bluetooth funktionieren auf dem pc und Handy(z.B. ich kann Fotos schicken, die vom Handy via BT). Wenn ich Anrufe, btSocket.connect(); im java-code unten, es will einfach nicht verbinden. Muss ich angeben, einen port zu verbinden, da ich angegeben habe, einen port für den serverSocket?
Jede Hilfe wäre sehr geschätzt.

public class BlueTooth_testActivity extends Activity {
    TextView header;
    Button discoverDevicesBtn;
    Button sendMsgBtn;
    Button closeBtn;
    EditText sendTxt;
    BluetoothAdapter btAdapter;
    BluetoothSocket btSocket;
    private static String btAdress = "00:10:60:D1:95:CD";
    private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    private OutputStream out;
    public BluetoothDevice device;
    private Boolean CONNECTED = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //init layout parameters        
        header = (TextView) findViewById(R.id.text1);
        discoverDevicesBtn = (Button) findViewById(R.id.discBtn);
        sendMsgBtn = (Button) findViewById(R.id.sendButton);
        closeBtn = (Button) findViewById(R.id.closeButton);
        sendTxt = (EditText) findViewById(R.id.editText1);
        discoverDevicesBtn.setOnClickListener(discoverDeviceListener);
        sendMsgBtn.setOnClickListener(sendMsgListener);
        closeBtn.setOnClickListener(closeBtnListener);
        //init bluetooth
        btAdapter = BluetoothAdapter.getDefaultAdapter();
        if (btAdapter.isEnabled()) {
            Toast.makeText(this, "Bluetooth state:" + btAdapter.getState() + " Ok!", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(this, "Bluetooth state:" + btAdapter.getState() + " Not ok!", Toast.LENGTH_LONG).show();
        }

    }

    private Button.OnClickListener discoverDeviceListener = new Button.OnClickListener() {@Override
        public void onClick(View v) {
            if (!CONNECTED) {
                device = btAdapter.getRemoteDevice(btAdress);
                header.append("\nRemote device: " + device.getName());
                try {
                    btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
                } catch (Exception e) {
                                    }
                header.append("\n createRfcommsockettoservice! ");
                btAdapter.cancelDiscovery();
                try {
                    btSocket.connect();
                    CONNECTED = true;
                    header.append("\n btSocket Created!");
                } catch (IOException e) {
                    Toast.makeText(getApplicationContext(), "Could not connect to socket", Toast.LENGTH_LONG);
                    try {
                        btSocket.close();
                    } catch (Exception b) {}
                }
            }

        }
    };


    private Button.OnClickListener sendMsgListener = new Button.OnClickListener() {@Override
        public void onClick(View v) {
            if (CONNECTED) {
                try {
                    out = btSocket.getOutputStream();
                    String msg = sendTxt.getText().toString();
                    byte[] msgBffr = msg.getBytes();
                    out.write(msgBffr);
                    Toast.makeText(getApplicationContext(), "Message sent", Toast.LENGTH_LONG).show();
                } catch (Exception a) {
                    Toast.makeText(getApplicationContext(), "Could not send msg", Toast.LENGTH_LONG).show();
                }
            } else {
                Toast.makeText(getApplicationContext(), "cant send msg, not connected", Toast.LENGTH_LONG).show();
            }

        }
    };


}  

(Ich havnt die Mühe gemacht, zu zählen, den rest der java-code wie das problem irgendwo in der Verbindungs-setup)

import bluetooth

name="bt_server"
target_name="siggen"
uuid="00001101-0000-1000-8000-00805F9B34FB"

def runServer():
serverSocket=bluetooth.BluetoothSocket(bluetooth.RFCOMM )
    port=bluetooth.PORT_ANY
    serverSocket.bind(("",port))
    print "Listening for connections on port: ", port   
    serverSocket.listen(1)
    port=serverSocket.getsockname()[1]
    inputSocket, address=serverSocket.accept()
    print "Got connection with" , address
    data=inputSocket.recv("1024")
    print "received [%s] \n " % data    
    inputSocket.close()
    serverSocket.close()  

runServer()  

.

  • Wäre ein Wireshark capture hier hilfreich sein?
  • Sie haben es eingeengt zu werden, ob das problem in python oder java?
  • Sie sollten immer prüfen Sie die client - /server-Implementierungen, indem Sie versuchen, verwenden Sie Ihre client/server in Verbindung mit einem Stück der bewährten software. Sehen, wenn Sie eine bluetooth-app mit einer hohen Bewertung in den app store, und versuchen Sie sich zu verbinden, um Ihre Python-Skript. Dann, sehen, wenn Sie eine hochwertige Python-server, eine Verbindung zu Ihrem Android-app. Dann sehen, wenn Ihr Skript eine Verbindung herstellen können, um Ihr Android-app.
  • Ich havnt gefunden, einen generischen bluetooth-client-oder server-app zu testen, meine entsprechenden apps(zu finden versuchen, wenn ich die Zeit haben). tnx für den Tipp sowieso. Havn ' T es geschafft, mein wireshark für die Erfassung der bluetooth-Verkehr
Schreibe einen Kommentar