Komunikacja BluetoothSocket - Android

Komunikacja BluetoothSocket - Android
JA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około rok
  • Postów:178
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

Kopiuj

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

Kopiuj
 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) {

            }


        }
    }
}
MD
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 9 lat
  • Postów:280
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...

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:minuta
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?

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
JA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około rok
  • Postów:178
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:

Kopiuj
<?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

edytowany 1x, ostatnio: janiu
JA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około rok
  • Postów:178
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.