Komunikacja BluetoothSocket - Android

0

Witam !
Mam taki problem, chciałem napisac prosta aplikacje na androida w której serwer bedzie wysyłał wiadomość po kliknieciu w button a klient bedzie ja odbierał niestety coś nie działa, mógłby ktoś spojrzeć.
Oto kod:

SERVER


public class Server extends Thread {
    private final BluetoothServerSocket mmServerSocket;

    public Server() {
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothServerSocket tmp = null;
        try {
            UUID uuid = UUID.fromString("550e8400-e29b-41d4-a716-446655440000");
            tmp = mBluetoothAdapter.listenUsingRfcommWithServiceRecord("Usługa witająca", uuid);
        } catch (IOException e) {
        }
        mmServerSocket = tmp;
    }

    PrintWriter out;
    BluetoothSocket socket = null;

    public void run() {
        Log.d("INFO", "Uruchamiam serwer");

        try {
            Log.d("INFO", "Czekam na połączenie od clienta");
            socket = mmServerSocket.accept();
            out = new PrintWriter(socket.getOutputStream(), true);
            Log.d("INFO", "Mam clienta!");
            send("Czesc");

        } catch (IOException e) {

        }

    }


    public void send(String wiadomosc) {
        try {

            out.println(wiadomosc);
            out.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}


CLIENT

 public Client(BluetoothDevice device, TextView tv) {
        this.tv = tv;
        BluetoothSocket tmp = null;
        mmDevice = device;
        ClientRun cr;
        try {
            UUID uuid = UUID.fromString("550e8400-e29b-41d4-a716-446655440000");
            tmp = device.createRfcommSocketToServiceRecord(uuid);
        } catch (Exception e) {
        }
        mmSocket = tmp;

        try {


        } catch (Exception e) {

        }
    }


    public void run() {


        while (true) {
            try {
                mmSocket.connect();
                Log.d("INFO", "Polaczono z serwerem!");


                in = new BufferedReader(new InputStreamReader(mmSocket.getInputStream()));
                Log.d("INFO", "Przed readem");
                input = in.readLine();

                Log.d("INFO", input);

                mmSocket.close();
            } catch (Exception e) {

            }


        }
    }
}
0

Co nie działa ? Co wypisuje ? Co wysyłasz jako argument BluetoothDevice ? Czemu w pętli podłączasz się do serwera i rozłączasz za każdym razem ? Pokaż reszte kodu...

0
janiu napisał(a):

niestety coś nie działa,

To nie jest profesjonalny opis problemu.
Ty masz pełny kod, ty możesz go uruchomić na urządzeniu i ty możesz go debugować, przeglądać logi. My do tego nie mamy dostępu i nie mam magicznej kuli.
Napisz konkretnie co nie działa?

  1. Dostajesz exception? wklej opis tego excepiton wraz z call stack
  2. czy serwer startuje prawidło? Jak nie jaki dostajesz błąd?
  3. czy klient łączy się poprawnie? Jak nie jaki dostajesz błąd?
  4. jak wygląda twój manifest? Może brakuje ci uprawnień.
  5. czy uradzania są sparowane
  6. logi LogCat też są pomocne
  7. wersja androida na obu urządzeniach?
0

1.Nie dostaje Exceptiona po prostu wiadomosc sie nie wysyła
2/3 Startuje prawidłowo łaczy sie też prawidłowo
4. Mój manifest wyglada tak:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.janiu.application6" >
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

    <application

        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


  1. Tak sa sparowane

  2. Obie 4

W załcnziku dodaje kod programu

0

Dobra naprawione. Wszystko działa nie potrzebnie łączenie klienta było w while.

1 użytkowników online, w tym zalogowanych: 0, gości: 1